中的块大小一样长通过Google搜索经历了大量加密/解密操作之后,我设法构建了这段代码。但是,它显示以下错误,我无法弄清楚为什么它正在发生。获取此错误 - IV参数必须与
ERROR:警告:mcrypt_encrypt():该IV参数必须是只要在/var/www/encrypt.php块大小上线16
error_reporting(E_ALL^E_DEPRECATED);
ini_set('display_errors', '1');
class Cipher {
private $securekey, $iv;
function __construct($textkey) {
$this->securekey = hash('sha256',$textkey,TRUE);
//$this->iv = mcrypt_create_iv(32);
$size = mcrypt_get_iv_size(MCRYPT_CAST_256, MCRYPT_MODE_CFB);
$this->iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM);
}
function encrypt($input) {
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->securekey, $input, MCRYPT_MODE_CFB, $this->iv));
}
function decrypt($input) {
return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->securekey, base64_decode($input), MCRYPT_MODE_CFB, $this->iv));
}
}
$cipher = new Cipher('secret passphrase');
$encryptedtext = $cipher->encrypt("hide me");
echo "->encrypt = $encryptedtext<br />";
$decryptedtext = $cipher->decrypt($encryptedtext);
echo "->decrypt = $decryptedtext<br />";
var_dump($cipher);
如果我以下从2行评论构造函数..
$size = mcrypt_get_iv_size(MCRYPT_CAST_256, MCRYPT_MODE_CFB);
$this->iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM);
&取消注释此行..
$this->iv = mcrypt_create_iv(32);
它停止显示错误。
我无法确定我做错了什么。
备注:如果您只是密码,'securekey'是一个误称。 Google for PBKDF2。 –