【发布时间】:2015-10-14 07:12:10
【问题描述】:
我正在尝试编写一个 md5 谓词来验证以下内容:
md5("my string", "my md5").
这种谓词的真值实例是
md5("long live and prosper", "bf1835ce984d2a97d31409394fe00e9a").
我查看了文档,发现了这个:http://www.swi-prolog.org/pldoc/doc_for?object=crypt/2
?- phrase("$1$", E, _),
crypt("My password", E),
format('~s~n', [E]).
无论如何,我无法让它工作。我确定我错过了一些东西,因为我在序言中很新。有什么提示吗?
编辑
为了更好的解释,我假设创建一个类似这样的子句:
md5(P, M):-
phrase("$1$", E, _),
crypt(P, E),
name(M, E),
format('~s~n', [E]).
?- md5("long live and prosper", "bf1835ce984d2a97d31409394fe00e9a").
$1$AtnbRJvB$cZ4gZvG2Glelv8hfWztcY/
false.
谢谢
(Prolog 实现:Mac OSX El Capitan 上的 swi-prolog)
【问题讨论】:
-
好吧,我的解释很糟糕。我的意思是我假设 sn-p 从“万岁和繁荣”生成“bf1835ce984d2a97d31409394fe00e9a”,但事实并非如此(当然,我使用我的短语而不是“我的密码”)。感谢您通知我,我将编辑我的问题。现在清楚了吗?
-
@Boris 谢谢,我用我的 shell 的完整输入和输出更新了这个问题
标签: prolog md5 swi-prolog