在数据库中存储密钥并检索它
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 提供binary
和varbinary
用于相同目的...
【讨论】:
【参考方案2】:最好的方法是使用PreparedStatement
,例如:
PreparedStatement ps = connection.prepareStatement("insert into encrypt values (?)");
ps.setBytes(1, rawKeyBytes);
ps.execute();
我建议你不要使用oletype
;可能更好地使它成为一个blob。请记住,键只是一个字节数组。不要尝试存储 SecretKeySpec
- 而是存储原始密钥字节。
【讨论】:
以上是关于在数据库中存储密钥并检索它的主要内容,如果未能解决你的问题,请参考以下文章