如何检查加密表中的行大小

时间:2015-09-23 16:47:39

标签: android sqlite encryption

1)情况:我使用sqlitecipcher for Android,由commonsguy as a library module友情提供,以便将文本存储在加密数据库中

2)要求:我需要告知用户一个条目(“条目”应该在这里读作“数据库表行”)占用多少空间

据我所知,SQLite(以及sqlitecipher包装器)不提供检查行大小的API,并且在读取条目后检查字节数将给出非加密文本的大小,因此这些信息不正确。

当然,我可以再次对数据进行AES测试并检查大小,但这会大大浪费处理能力。

是否有任何可靠的公式可以计算文本经过AES加密后字符数量的变化情况?或者任何其他建议如何检查加密表的行大小?

1 个答案:

答案 0 :(得分:1)

根据页面级上的this link SQLite 加密。对于此加密,每个页面都已扩展为 16字节的初始化向量和 20字节的消息验证代码(HMAC_SHA1)。

默认页面大小为 1024字节,额外的 36字节,这会产生3.5%的开销,可以在行间平均分配。可能会少一些,具体取决于页面中有多少额外数据。