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

时间:2010-07-09 07:04:17

标签: java encryption

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

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

如何在查询中设置参数?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

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