我使用 openssl 加密文本,然后将其放入 mysql 数据库。这很好用,但是对于长文本,解密的文本会损坏。
个人认为这是由于mysql将这段文本保存到数据库的方式,密文中有很多非字母数字字符。但我不确定。另外我不知道在 mysql 中使用哪种排序规则,现在我将它设置为 *utf8_unicode_ci*,但仍然存在数据损坏。
一个活生生的例子可以在这里看到:http: //todolist.x10.mx
Username: example
Password: password
要查看损坏的数据,请单击Download Backup
。
下面的代码,当然$encrypted
是存入数据库的。此代码在没有数据库的情况下工作正常。
<?php
$source = 'very long text';
$iv = "1234567812345678";
$pass = 'difficultpassphrase';
$method = 'aes-256-ofb';
$encrypted = openssl_encrypt ($source, $method, $pass, true, $iv);
echo $encrypted;
$decrypted = openssl_decrypt ($encrypted, $method, $pass, true, $iv);
echo $decrypted;
?>
提前感谢您的时间和专业知识。