在数据库中存储密钥并检索它

Posted

技术标签:

【中文标题】在数据库中存储密钥并检索它【英文标题】:Storing a secretkey in the database and retrieving it 【发布时间】:2010-07-09 07:04:17 【问题描述】:

我正在做一个使用 AES 算法的密码加密和解密项目。 我需要将 SecretKeySpec 类型的密钥存储在数据库(ms-access)中并且必须检索它。 我怎样才能做到这一点? 我在 oletype 对象类型的数据库中创建了一个列。 我正在使用查询:

String query="insert into encrypt values(?)";

如何在查询中设置参数?

【问题讨论】:

重复:***.com/questions/3187166/… 【参考方案1】:

据我所知,Access 支持 OLE 对象 类型来存储 MS 文档和二进制数据,例如 pictures, sounds, or other binary data。约束条件是“它们必须在使用 OLE 协议的其他程序中创建,可以链接到或嵌入到 Microsoft Access 表中。您必须在表单或报表中使用绑定的对象框架来显示OLE 对象。"

我喜欢建议使用 MS SQL Server 或 mysql(引擎),以便您可以更更有效地进行许多完整性一致性检查强>。 MySQL 提供了一种使用BLOB 类型存储二进制值的方法。 SQL Server 提供binaryvarbinary 用于相同目的...

【讨论】:

【参考方案2】:

最好的方法是使用PreparedStatement,例如:

PreparedStatement ps = connection.prepareStatement("insert into encrypt values (?)");
ps.setBytes(1, rawKeyBytes);
ps.execute();

我建议你不要使用oletype;可能更好地使它成为一个blob。请记住,键只是一个字节数组。不要尝试存储 SecretKeySpec - 而是存储原始密钥字节。

【讨论】:

以上是关于在数据库中存储密钥并检索它的主要内容,如果未能解决你的问题,请参考以下文章

检索存储在Redis(Ruby)中的所有密钥的列表

从数据存储中检索密钥(更新和删除实体)

将数据存储在 .txt 文件中并检索它

我的共享首选项存储列表视图的数据并检索它不起作用

更新AWS Amplify中现有应用程序的回购访问密钥

Azure 密钥保管库加密