MySQL CBC 加密和存储初始化向量

标签 mysql encryption aes

我正在从事一个 HIPAA 项目,我注意到我需要加密所有包含或可能包含私有(private)健康信息的列级数据。也就是说,我希望在 block_encryption_mode=aes-256-cbc 中将 AES_ENCRYPT 和 AES_DECRYPT 与 MySQL 一起使用。看起来我需要为表中的每一行提供一个唯一的 IV(初始化向量)。我需要同样的 IV 来加密和解密。我应该将其存储在数据库的列中还是其他位置?

另外,对于列类型,使用 varbinary/blob 还是 HEX 加密结果并将其放入 varchar/text 中更好?

欢迎提出任何其他建议,以尽可能保证数据安全。

最佳答案

将iv存储在列中,不需要保密。

我会使用 varbinary/blob 而不是十六进制编码数据。

注意:Base64 是比十六进制更好的选择,存储开销更少。

稍微解决一下@Marc:加密 key 将如何受到保护?服务器保护和管理访问有多好。

关于MySQL CBC 加密和存储初始化向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36013996/

相关文章:

php - 没有错误,但我在数据库中看不到我的数据

c# - 加密c#和mysql之间的数据流量

objective-c - 使用 SecTransform API(或其他系统 API)在 OS X 上进行 RSA 公钥解密

c# - 使用 BouncyCaSTLe : AESEngine, AESFastEngine 或 AESLightEngine 进行 AES 加密?

c# - MySQL(或 C#)不匹配 double 或小数

c# - 将 csv 导入 mysql 数据库 - 如何读取带有波兰字符的文件?

mysql - 表 '[database-name].sessions' 不存在 - 使用快速 session

mysql - Qt MySQL 无法加载插件驱动(QLibrary、QPluginLoader 成功加载,QSqlDatabase::drivers() 返回空!)

c - 在 C 中使用 libgcrypt 导出 key

linux - 使用 openssl 作为命令行计算 AES128 CMAC