新手尝试将 Sqlcipher 连接到 .NET Core (Windows) Sqlite 应用程序。我们也在使用 DevExpress XPO。
我尝试镜像 SQLCipher 文档页面中概述的步骤。它运行时没有错误或异常,但它不进行加密。
这是我的代码示例片段:
var unitOfWork = new UnitOfWork(IDataLayer);
unitOfWork.ExecuteNonQuery($"PRAGMA key = '{myKeyValue}';");
unitOfWork.ExecuteNonQuery($"PRAGMA cipher_license = '{myCipherLicense}';");
unitOfWork.ExecuteNonQuery("CREATE TABLE IF NOT EXISTS Model(id, a,b);");
此时,应该创建一个加密的DB文件。
我尝试在不使用密钥/密码密钥的情况下运行以下命令:
try
{
var unitOfWork = new UnitOfWork(IDataLayer);
unitOfWork.ExecuteNonQuery(“INSERT INTO Model (id, a, b) VALUES (‘id’, ‘a’, ‘b’);”);
}
catch (Exception ex)
{
}
我希望此时抛出异常,表明我尝试在没有密钥/密码许可证的情况下访问数据库。
我还可以在 SqliteStudio 中打开生成的数据库并不受限制地查看数据。
这是我引用的 NuGet 包:
PackageReference Include=“DevExpress.Xpo” Version=“23.1.3”
PackageReference Include=“Microsoft.Data.Sqlite.Core” Version=“7.0.9”
PackageReference Include=“SQLitePCLRaw.bundle_e_sqlcipher” Version=“2.1.5”
PackageReference Include=“SQLitePCLRaw.bundle_zetetic” Version=“2.1.5”
PackageReference Include=“System.Data.SQLite” Version=“1.0.117”
PackageReference Include=“zetetic-sqlcipher-windows-fips” Version=“4.5.3”
我觉得我在设置步骤或环境中遗漏了一些东西。
有人可以帮我指出正确的方向吗?