如何从密码和PBKDF2迭代中获取原始密钥数据

时间:2017-03-09 23:42:44

标签: sqlcipher

SQLCipher中,可以通过两种方式提供数据库密钥:作为密码短语(具有相关数量的PBKDF2轮次)或作为原始密钥。

我试图找到一种方法来获取原始密钥(以64个字符的十六进制字符串给出)给定密码(任意字符串)和轮数。我假设解决方案在于以某种方式自己执行PBKDF2密钥派生,但我不太熟悉它可能如何工作,或者它是否会产生一个值,我可以将其作为原始密钥提供给{{1} }。此外,PBKDF2功能似乎带盐,我不知道。如果必须,我相信我可以深入研究sqlcipher源代码来解决这个问题,但我希望可能已经有一种简单的方法可以解决这个问题。

1 个答案:

答案 0 :(得分:1)

可以找到有关SQLCipher密钥派生的详细信息on the design page。 salt存储在数据库文件的前16个字节中。然后,您将使用盐和密码短语以及适当数量的PBKDF2-HMAC-SHA1轮次(SQLCipher 3为64,000,早期版本为4,000)