2015-06-29 140 views

回答

6

曾經是如果你的密鑰太短,PHP會用\ 0填充它。自PHP 5.6.0以來,這已不再是這種情況。您應該檢查使用的密碼所需的密鑰的大小:http://php.net/manual/en/function.mcrypt-get-key-size.php請注意,還有其他方法可以檢查密鑰大小,請檢查文檔。簡單的方法我理解密鑰大小:ASCII中的'fubar'字符串是5 * 8 = 40個字節(每個字符8個字節)。但是這是對使用字符集的假設。在php.net的一些意見更好地解釋如何推出正確大小的密鑰:

$ key = pack('H *',「bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3」);

在這裏,64字符的字符串將被轉換成32個字節的密鑰,因爲BC是一個字節,b0爲另一個,等等。從http://php.net/manual/en/function.mcrypt-encrypt.php

可以仔細檢查的字節數用的strlen()。從上面的例子strlen($ key)將打印出32個。