You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi中用MySQL的VarBinary存储AES加密数据,此方式是否正确?

在Delphi中结合MySQL实现AES加密存储密码的实践

我之前已经实现了可用的AES加密和解密算法,还通过WriteBinaryStream和ReadBinaryStream把加密后的内容成功存在ini文件里。最近要把这套逻辑迁移到MySQL中,踩了个小坑后终于搞定了,分享给大家:

踩坑经历

一开始我尝试把加密后的内容存在MySQL的varchar字段里,但怎么都不成功——应该是字符编码转换过程中破坏了二进制加密数据。后来换成varbinary类型就完美解决了,毕竟varbinary是专门用来存储二进制数据的,不会做额外的编码转换,能完整保留加密后的字节流。

具体实现代码

加密后存入MySQL的varbinary字段

UserMain.spUser.Params.ParamByName('pPassword').Value := TEncoding.ANSI.GetBytes(aes_encrypt(Edit2.Text));

从MySQL读取后解密显示到Edit控件

Edit2.Text := aes_decrypt(TEncoding.ANSI.GetString(UserMain.spUser.Params.ParamByName('pPassword').AsBytes));

小提醒

这里用TEncoding.ANSI做字节和字符串的转换,是为了保证加密前后的字节流一致性,避免因为编码差异导致解密失败。如果你的业务场景有特殊编码需求,可以根据实际情况调整,但一定要保证加密和解密时的编码逻辑完全一致。

内容的提问来源于stack exchange,提问作者user1937012

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:37:03