Android 使用 SQLCipher 更改加密 Room DB 的密码
Android Change password of encrypted Room DB with SQLCipher
我使用 SQLCipher 成功加密了我的 Room DB。
我现在喜欢让用户选择更改数据库密码。那么如何使用 Room DB 更改 SQLCipher 密码?
找到答案:
database.query("PRAGMA rekey = '$newPassword';", emptyArray())
作为带有上下文的完整代码示例:
fun changePassword(previousPassword: String, newPassword: String) {
val passphrase = SQLiteDatabase.getBytes(previousPassword.toCharArray())
val factory = SupportFactory(passphrase)
val database = Room.databaseBuilder(applicationContext, <your_database_class>::class.java, "<database_name>")
.openHelperFactory(factory)
.build()
database.query("PRAGMA rekey = '$newPassword';", emptyArray())
}
甚至不需要关闭和re-open数据库。
我使用 SQLCipher 成功加密了我的 Room DB。
我现在喜欢让用户选择更改数据库密码。那么如何使用 Room DB 更改 SQLCipher 密码?
找到答案:
database.query("PRAGMA rekey = '$newPassword';", emptyArray())
作为带有上下文的完整代码示例:
fun changePassword(previousPassword: String, newPassword: String) {
val passphrase = SQLiteDatabase.getBytes(previousPassword.toCharArray())
val factory = SupportFactory(passphrase)
val database = Room.databaseBuilder(applicationContext, <your_database_class>::class.java, "<database_name>")
.openHelperFactory(factory)
.build()
database.query("PRAGMA rekey = '$newPassword';", emptyArray())
}
甚至不需要关闭和re-open数据库。