2010-09-07 78 views
2

我被要求将一个登录表单指向一个外部网站,其中登录名和密码应该出现在URL中,并且应该通过Blowfish加密。我被提供了一个“密钥”,其格式为:"nnn-nnnssssssssssssssssssssssssnnnnnn"其中n是一个数字,s是一个字母(其中24个)。PHP Blowfish加密

从PHP文档看来,用crypt()触发Blowfish加密需要提供特定格式的盐,以“$ 2a $”开头,但这不是我提供的密钥格式。这是否意味着我需要提供我自己的盐?如果是的话,我提供的钥匙有什么意义?

+0

你明白了吗? – 2010-11-07 03:04:18

回答

1

crypt是一个散列函数,它不用于加密。要真正加密你需要的mcrypt或纯php的实现(我记得在梨中看到的东西)。

+2

+1哈希函数的最糟糕的名字。 ;) – deceze 2010-09-07 08:52:30

+0

我可能制定了错误的东西,“哈希”可能是正确的术语。 – stef 2010-09-07 08:57:24

1

尝试以此为盐:$ 2A $ NN $ nnnnsssssssssssnnn $(没有工作)

这不是一个哈希,然后你将不得不使用的mcrypt或PEAR库:

http://pear.php.net/package/Crypt_Blowfish

实施例:

http://www.chilkatsoft.com/p/php_blowfish.asp

我没有看到IV所以模式将必须ECB(弱)和WH ole事情将是关键。

+0

是的,这就是我所做的,但这给了我$ 2a $ 08 $ HBHfHB.yHBa2MQyvKhLrcOjQY22GCusbxK2NT2ClnfNHDh4r61gmO作为测试字符串的散列值,但这与它们侧面的散列结果不同,它是p/R0ePNz - afaik它们不能是河豚哈希值。 – stef 2010-09-07 09:18:11

+0

@stef感谢您的反馈。看到我编辑的答案。 – 2010-09-07 19:32:23