有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用Hibernate在java中进行SQLite加密

我目前正在使用hibernate-sqlite

要访问动态创建的sqlite数据库,这一点非常有效。现在我想保护sqlite文件。经过一些研究,我发现应该采用(AES)加密。有人能解释一下,使用hibernate是否可以做到这一点吗?如果是,怎么做?如果这不起作用,是否有其他解决方案来保护文件中的数据


共 (1) 个答案

  1. # 1 楼答案

    您可以使用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正式实施 < L> > A4}——一个实现SQLite加密的WxWistGeS样式C++包。<李>
    • SQLCipher使用openSSL的libcrypto实现
    • SQLiteCrypt自定义实现,修改API
    • botansqlite3-botansqlite3是SQLite3的加密编解码器,可以使用Botan中的任何算法进行加密

    SEE和SQLiteCrypt需要购买许可证