包含垃圾字符的SQLite文件

Nat*_*ite 6 .net c# sqlite xamarin.ios

我目前正在使用MonoTouch和SQLite来确定使用加密数据库是否优于带加密的标准.txt文件.

我试图使用RijndaelManaged和其他System.Security.Cryptography方法来加密我的SQLite数据库,但数据库变得腐败.

我发现了问题,但不知道为什么会发生这种问题或如何解决它.这是一个带有单个表的基本SQLite文件:

SQLite format 3@  -‚

øø?gtablenewnewCREATE TABLE new (id int(5), name vchar(255))
Run Code Online (Sandbox Code Playgroud)

在线使用示例并加密此数据库后,我得到:

SQLite format 3@  -?

???gtablenewnewCREATE TABLE new (id int(5), name vchar(255))
Run Code Online (Sandbox Code Playgroud)

这使数据库损坏并且无法使用.有谁知道为什么会这样?任何人都可以帮助我加密这个数据库而不使用SQLCipher?

编辑:我尝试以字节形式读取原始数据库,并尝试将字节转换为字符串,但无论我使用什么编码,我在第一行后得到\ 0.

sbl*_*lom 2

最有可能出现问题的地方是当您在加密之前读取未加密的数据库时,或者打开一个新文件以写出新解密的数据库时。

作为故障排除步骤,您可以考虑以字节形式读入原始数据库文件,然后将其写出,无需任何干预加密/解密。如果它仍然被损坏,我首先要检查的是您打开输出文件所使用的编码。