mysql - MySQL 中的二进制/字符串转换

标签 mysql json

出于存档/历史目的,在 MySQL 中的表上进行更新后,我将此表中相关字段的快照以 JSON 形式存储在更改日志表的 TEXT 字段中。如果表具有 varbinary 字段来安全地存储敏感信息,我将通过将 varbinary 字段转换为 CHAR 来存储 varbinary 字段的字符串表示形式,因为我无法将二进制数据序列化为 JSON。我的做法如下:

SELECT CAST(BinaryField AS CHAR) as CastedValue FROM table

二进制字段的示例值为:0x774751ECAEC2D03703805E07AB0B8356 类型转换值为:wGQ���7�^��V

原始值使用 MySQL aes_encrypt 函数和 key 存储在 varbinary 字段中。

当我尝试使用 aes_decrypt 解密此转换值时,它返回 NULL:

SELECT cast(aes_decrypt('wGQ���7�^��V' ,'mykey') as char) as thedata ;

如何从转换的二进制值中取回原始值?

最佳答案

加密数据是未经编码的 8 位字节数组。事实上,许多字节和字节序列没有 UTF-8(或任何有意义的)字符表示。

最终,当数据被解密时,它将恢复为原始编码。

不存在“转换”,这严格取决于您如何看待字节,并且它是一种编码,赋予字节一些意义,而不仅仅是 8 位。

关于mysql - MySQL 中的二进制/字符串转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35945748/

相关文章:

php - 我可以直接从我的 Arduino 将项目放入 MySQL 数据库吗?

带有连接和分组依据的mysql查询

javascript - 在 native react 中写入/编辑/覆盖 json 文件

php - 使用 ajax 调用时,MySQL 查询数组不会被填充

mysql - 从数据库中检索数据并将其发送到laravel中的ajax

c# - 如何使用 C# 将 DataTable 值转换为 json?

javascript - 在 javascript 中访问级联 JSON

Javascript 变量在函数之外不起作用

json - 对 API 进行 curl 并从 JSON 中获取特定字段

python - 如何使用python mysql实现搜索引擎?