PHP加密空字符串

时间:2017-10-12 17:19:37

标签: php security encryption aes

我有这段代码

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));

但是我一直有一个空字符串作为解码文本......

有人可以帮我弄清楚原因吗?

1 个答案:

答案 0 :(得分:2)

您未在$text功能中的任何位置使用crypt()。因此,您加密一个空('不存在')字符串。

您必须将$newidcrypt()}更改为$text才能使其正常运行。像这样:

$cryptedid = openssl_encrypt($text,CRYPTALGO,$encryption_key,0,$iv);
//                           ^^^^^