首页 > 编程知识 正文

cypnest加密狗,saferoom曼谷

时间:2023-05-05 20:27:38 阅读:152218 作者:1497

摘要对于Room数据库,由于无法直接支持SQLCipher加密,因此CWAC-SafeRoom应运而生。

CWAC-SafeRoom是一个便于加密Room数据库的框架,该项目的基础是基于SQLCipher原理实现的,但它非常适合Room数据库框架。

1 .部署包要使用此框架,必须首先部署对应的lib包。

对androidx的更改将导致此内容引入两个版本的软件包,分别应用于androidx和早期版本的Android支持软件包。 例如以下所示。

Androidx版repositories { maven } URL ' https://S3.amazonaws.com/repo.commons ware.com ' } ependencies { implementation ' com.commons ware.cwac : saferoom.x :1.3.0 ' }早期版本的Android support版本repositort dependencies { implementation ' com.commons ware.cwac : saferoom 3301.2.1 ' }2.正在使用

val instance=room.database builder (context,test database : class.Java,DB_NAME ).build )使用SafeRoom

privateconstvalpassword=' 123456 ' ./val factory : safehelperfactory=safehelperfactory.fromuser (此工厂方法val factory=safehelperfactory (password.tochachard ) ) 可以使用lder ) context,testdatabase (db _ name ).openhelperfactory(factory ).build )的加密密码为String (请认为String是不变的值。

如果需要使用控件EditText获取特定的加密密码,则框架将提供fromUser ()来获取。

打开加密的数据库时,框架会清除加密密码,如果fromUser () )获取了该密码,则还会清除控件的内容。

3 .如果在加密和解密现有数据库的以前的项目中已经有在Room中创建的数据库,而且未加密,则使用上述加密直接获取数据库实例并读取数据库文件会导致错误。 的错误

因此,如果需要加密,通常需要重新创建内容和迁移数据。

框架CWAC-SafeRoom为当前现有数据库提供了非常简单的加密和解密过程。

1 .获取数据库加密状态如果已经有用Room或其他方法创建的SQLite数据库,则SQLCipherUtils类具有getDatabaseState (和encrypt )方法。

getdatabasestate(context,String )方法用于获取数据库的加密状态,String是数据库名称。 返回值为:

加密(已加密) UNENCRYPTED (未加密) DOES_NOT_EXITS (不存在)2.数据库加密。如果未加密,则为ENCRYPTED (加密) context,strinstring

getDatabaseState和encrypt有多种重载方法,可以为每个参数设置。 上述以比较简单的方法为例进行说明。

请注意,必须在关闭数据库时(例如在打开数据库之前)调用encrypt ()。

3 .如果需要对数据库的解密数据库进行解密,则需要用decrypt(contextctxt,File originalFile,char[] passphrase ) )对数据库文件进行解密并取出当前数据和encrypt有点相似

4 .修改加密密钥: safehelperfactory.rekey (supportsqlitedatabasedb,char[] passphrase )方法可以加密和修改现有的加密数据库。

使用此方法无法对未加密的数据库进行加密。 要加密数据库,请调用方法encrypt ()。

5 .直接打开未加密的数据库,然后使用newsafehelperfactory ('.tochararray ) )创建safehelperfactory。

3 .混淆规则混淆文件添加以下代码:

-keep class net.sqlcipher.** {; }-keep classnet.SQL cipher.database.{ *; }总结CWAC-SafeRoom是用于促进Room数据库加密的框架。 该项目的基础是使用SQLCipher原理实现的,但更适合Room数据库框架。 如果采用该加密,则apk数据包数量m增加,因此慎重选择对数据包大小敏感的APP应用。

千兆位地址

开发者文档

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。