我有这段代码
define('CRYPTKEY','rx4/YK51nJo7LuRnZAz/jpXZbCunkNplneL6ugkBs5g=');
define('CRYPTALGO','aes-256-cbc');
public function crypt($text){
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
$encryption_key = base64_decode(CRYPTKEY);
$cryptedid = openssl_encrypt ($newid,CRYPTALGO,$encryption_key,0,$iv);
return base64_encode($cryptedid.'::'.$iv);
}
public function decrypt($text){
$encryption_key = base64_decode(CRYPTKEY);
list($encrypted_data, $iv) = explode('::', base64_decode($text), 2);
return openssl_decrypt($encrypted_data,CRYPTALGO,$encryption_key,0,$iv);
}
CRYPTKEY是这样创建的:
base64_encode(openssl_random_pseudo_bytes(32));
但是我一直有一个空字符串作为解码文本......
有人可以帮我弄清楚原因吗?
答案 0 :(得分:2)
您未在$text
功能中的任何位置使用crypt()
。因此,您加密一个空('不存在')字符串。
您必须将$newid
(crypt()
}更改为$text
才能使其正常运行。像这样:
$cryptedid = openssl_encrypt($text,CRYPTALGO,$encryption_key,0,$iv);
// ^^^^^