我们可以编写加密功能的规则吗?

时间:2011-03-14 09:17:19

标签: math prolog

我们可以将密码函数作为prolog中的规则编写,即

C = enc(K, M).
M = dec(K, C).

我不想要低级详细信息,但想要编写一个函数来为我提供此功能。如果在prolog中不可能,那么有人可以给我推理,因为这个原因prolog不支持这种功能。

2 个答案:

答案 0 :(得分:4)

在ISO标准Prolog中我不相信你可以,但SWI-Prolog有extension允许这样做。如果您定义谓词

enc(K, M, Result) :- % whatever
dev(K, C, Result) :- % whatever

在第三个参数中返回结果,你可以说

:- arithmetic_function(enc/2).
:- arithmetic_function(dec/2).

并使用

C is enc(K, M).

等。您无法使用=执行此操作,因为它在Prolog中具有特殊含义:将变量C与术语(数据结构)enc(K,M)统一。

答案 1 :(得分:0)

我对仿函数一无所知,prolog也不了解它们。 你可以只使用谓词 - 事实,连接一些变量。

例如

encode(+Key, +Message, -CodeMessage)/3
decode(+Key, +CodeMessage, -OriginalMessage)/3

这意味着,只有当您知道密钥和消息时,您才能使用encode / 3谓词获取此消息的代码。只有知道了消息的密钥和代码,才能获得带有decode / 3谓词的原始消息。