如何解决openssl_decryption无法显示纯文本
我正在使用openssl_encrypt
和openssl_decrypt
传输安全消息。它工作正常,但有时无法显示实际消息。整个消息很好,除了最后几个字节。我猜 OPENSSL_ZERO_PADDING 出了点问题。谁能解释为什么会这样?我正在使用ENC_CIPHER_ALGORITHM=AES-256-CFB
public function encryptMessage($message)
{
// get parameters
$algorithm = getenv('ENC_CIPHER_ALGORITHM');
$private_key = hex2bin(getenv('ENC_PRIVATE_KEY'));
$init_vector = hex2bin(getenv('ENC_INIT_VECTOR'));
$time = date('Y-m-d h:i:s');
//SIGNATURE = MESSAGE;TIMESTAMP
$plaintext = $message.';'.$time;
// generate cipher
$cipher = openssl_encrypt($plaintext,$algorithm,$private_key,OPENSSL_ZERO_PADDING,$init_vector);
return $cipher;
}
public function decryptMessage($chipher)
{
// get parameters
$algorithm = getenv('ENC_CIPHER_ALGORITHM');
$private_key = hex2bin(getenv('ENC_PRIVATE_KEY'));
$init_vector = hex2bin(getenv('ENC_INIT_VECTOR'));
// decrypt
$plaintext = openssl_decrypt($chipher,$init_vector);
return $plaintext;
}
预期输出:(通常看起来像这样)
array(2) {
[0]=>
string(7) "message"
[1]=>
string(19) "2020-08-13 10:04:35"
}
损坏的输出:(有时)
array(2) {
[0]=>
string(7) "message"
[1]=>
string(19) "2020-08-13 10:04:5�"
}
更新:我正在使用GET方法发送密码,而未使用任何URL编码。现在,我使用了PHP rawurlencode()方法。那解决了问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。