gpt4 book ai didi

php - 使用 openssl 的数据损坏 mysql

转载 作者:行者123 更新时间:2023-11-30 23:27:12 25 4
gpt4 key购买 nike

我使用 openssl 加密一段文本,然后将其放入 mysql 数据库中。这工作正常,但是对于长文本,解密的文本会损坏。

我个人认为这是由于mysql将这段文本保存到数据库的方式,加密文本中有很多非字母数字字符。但我不确定。我也不知道在 mysql 中使用哪种排序规则,现在我将它设置为 *utf8_unicode_ci*,但仍然存在数据损坏。

一个活生生的例子可以在这里看到:http://todolist.x10.mx

Username: example
Password: password

要查看损坏的数据,请单击下载备份

代码下面当然是$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;
?>

预先感谢您抽出宝贵的时间和专业知识。

最佳答案

要以二进制形式存储加密内容,您不能使用带编码的字符类型,因为编码很可能会“破坏”您的数据。

您应该改用 BINARY or VARBINARY数据类型,它们正是为存储二进制数据而设计的。

替代方法是 base64_encode将数据存储为字符数据类型之前的数据,以及 base64_decode从数据库中获取数据时的数据。这将对数据进行编码,以便加密数据可以存储在 varchar/char 数据类型中(尽管它会使数据稍微长一些,所以要小心)

关于php - 使用 openssl 的数据损坏 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12655044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com