0

我成功地使用 SQLCipher 加密了我的 Room DB。

我现在想让用户选择更改数据库密码。那么如何使用 Room DB 更改 SQLCipher 密码呢?

4

1 回答 1

1

找到了答案:

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())
    }

甚至不需要关闭并重新打开数据库。

于 2020-10-06T17:13:31.457 回答