我目前正在使用hibernate-sqlite。
要访问动态创建的 sqlite 数据库,这非常有效。现在我想保护 sqlite 文件。经过一番研究,我发现要走的路是(AES)加密。任何人都可以向我解释这是否可以使用休眠?如果是这样,怎么办?如果这不起作用,是否有任何其他解决方案来保护文件中的数据?
我目前正在使用hibernate-sqlite。
要访问动态创建的 sqlite 数据库,这非常有效。现在我想保护 sqlite 文件。经过一番研究,我发现要走的路是(AES)加密。任何人都可以向我解释这是否可以使用休眠?如果是这样,怎么办?如果这不起作用,是否有任何其他解决方案来保护文件中的数据?
您可以使用 sqlite (System.Data.SQLite) 的内置加密。在http://sqlite.phxsoftware.com/forums/t/130.aspx查看更多详细信息
您还可以使用 SQLCipher,它是 SQLite 的开源扩展,提供透明的 256 位 AES 数据库文件加密。http://sqlcipher.net
因为你需要休眠
您可以使用 FluentNHibernate,您可以使用以下配置代码:
private ISessionFactory createSessionFactory()
{
return Fluently.Configure()
.Database(SQLiteConfiguration.Standard.UsingFileWithPassword(filename, password))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<DBManager>())
.ExposeConfiguration(this.buildSchema)
.BuildSessionFactory();
}
private void buildSchema(Configuration config)
{
if (filename_not_exists == true)
{
new SchemaExport(config).Create(false, true);
}
}
方法UsingFileWithPassword(filename, password)
加密数据库文件并设置密码。它仅在创建新数据库文件时运行。用这种方法打开旧的未加密的失败。
编辑 :
为您提供更多选择
SEE 和 SQLiteCrypt 需要购买许可证。
你知道SQLite 的加密扩展,对吧?