我在PHP中有这个功能
public function hashPassword($password) {
return crypt($password, '$2a$07$twfAAA1954npfBBB1982oo');
}
它已将密码存储在数据库中。我正在转换此数据库以使用Access作为前端而不是PHP和HTML。我需要VBA / vbscript代码来转换输入的密码,如果它是相同的密码,则匹配上述函数的输出。
我已经尝试了所有正常的哈希算法,但没有一个能够工作。我不确定crypt函数是如何工作的,但它似乎有某种种子值'$2a$07$twfAAA1954npfBBB1982oo'
加上密码。然后它可能使用一些标准的哈希算法。
有人可以给我代码,或者至少告诉我crypt函数如何使用该种子值,以便我可以在vba中重新创建crypt()
函数?
我找到了crypt函数的源代码,但是我对PHP的了解还不够强,无法理解究竟发生了什么。
答案 0 :(得分:0)
关于原始功能:http://php.net/crypt 所以它使用你提到的字符串作为盐。算法是:CRYPT_BLOWFISH
VB中有一些blowfish实现:
答案 1 :(得分:0)
深入挖掘后发现地穴正在使用河豚。
但我似乎无法使用吹鱼算法获得匹配的值。你能帮我理解这个吗?
密码是:Truck0409! 盐是:$ 2a $ 07 $ twfAAA1954npfBBB1982oo和从crypt函数返回的存储密码是:$ 2a $ 07 $ twfAAA1954npfBBB1982oeksSlrRQpws2mkzTSloxQRt4QivN4wha
如果您在http://www.functions-online.com/crypt.html
中输入密码和盐你得到相同的结果,但我不能让它在任何河豚加密器上工作,如: http://webnet77.com/cgi-bin/helpers/blowfish.pl
所以我直到我可以通过使用吹鱼加密器得到相同的结果我不想浪费我的时间在vba中查找blowfish算法。任何人都可以解释如何使用河豚获得相同的结果吗?