【发布时间】:2019-10-28 05:25:14
【问题描述】:
我正在一个简单的脚本中使用 php openssl_encrypt 和 openssl_decrypt 进行测试,而没有在任何函数中包含 2,但是一旦我将 openssl_encrypt 一个放在自定义函数中,它就不起作用并且没有明确的错误字符串返回。只是不知道是什么问题。我已附上示例。
因此,如果我注释掉 openssl_encrypt 行并使用 encrypt() 则它不起作用,但如果放回 openssl_encrypt 则它会再次起作用。知道我使用 encrypt() 时有什么问题吗?
$algo = 'aes-256-gcm';
$options = 0;
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($algo));
$key = '13123123123';
$data = 'test';
$tag = null;
//$ciphertext = openssl_encrypt($data, $algo, $key, $options, $iv, $tag);
$ciphertext = encrypt($data, $algo, $key, $options, $iv, $tag);
$decrypt = openssl_decrypt($ciphertext, $algo, $key, $options , $iv, $tag);
if (false === $decrypt) {
echo sprintf("OpenSSL error: %s", openssl_error_string()."\n");
}
echo "data:$data\n";
echo "decrypt:$decrypt\n";
printf ("Decryption %s\n", $data === $decrypt ? 'Ok' : 'Failed');
function encrypt($data, $algo, $key, $options, $iv, $tag) {
return openssl_encrypt($data, $algo, $key, $options, $iv, $tag);
}
【问题讨论】: