我使用的是PouchDB与websql适配器或科尔多瓦的应用程序(我使用SQLite的插件).
注意,这个数据库是完全本地的,我不需要它同步.
对于我的特定应用程序(数据库用于跟踪API调用),我可以多次更新同一文档.
在删除文档并压缩数据库之后,我的数据库仍在增长.
我在删除文档后尝试压缩,尽管它有所不同 - 仍然保存了修订版本的记录 - 所以我的数据库仍然无限增长.
如何阻止数据库无限增长?
删除(通过设置doc._deleted = true然后db.put(doc))和压缩似乎不起作用.
请参阅下面的一条记录,即使我删除它并压缩数据库,它仍会随着所有修订而继续增长:
{
"id": "STATUS_TYPE_WEB_BROADCAST_RESULT_APICALL_5",
"deleted": true,
"rev_tree": [
{
"pos": 1,
"ids": [
"561567a6abccf9e25063be1cff906862",
{
"status": "missing"
},
[
[
"76a29a5ea586f54b86d9f7671fa0938a",
{
"status": "missing"
},
[
[
"00945a90f36790a6e25c3c8c99ecb008",
{
"status": "missing",
"deleted": true
},
[
[
"1844208b140a98fe83ccf547f3da1516",
{
"status": "missing"
},
[
[
"dd56c4b8dfae01cf3eabfad3ea21bf84",
{
"status": "missing"
},
[
[
"9152aac8de2c87c2265cc34ef1e992a9",
{
"status": "missing",
"deleted": true
},
[ …Run Code Online (Sandbox Code Playgroud) 我有两个共享用户数据库的系统,因此身份验证需要相同。
密码当前使用 C# 加密Cryptography.Rijndael(注意不是RijndaelManaged)。使用自定义密钥和 iv(初始化向量)。(CBC模式和Pkcs7填充)
C#加密如下:
Rijndael alg = Rijndael.Create();
alg.Key = key;
alg.IV = IV;
CryptoStream cs = new CryptoStream(ms, alg.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(clearData, 0, clearData.Length);
cs.Close();
byte[] encryptedData = ms.ToArray();
Run Code Online (Sandbox Code Playgroud)
key是 256 位(32 字节),iv(初始化向量)是 128 位(16 字节)。块大小为 128 位(16 字节)。
key 和 iv 是来自 base64 字符串的字节数组,通过:
byte[] key = Convert.FromBase64String(base64Key);
byte[] iv = Convert.FromBase64String(base64IV);
Run Code Online (Sandbox Code Playgroud)
注意:我无法控制 C# 代码(遗留系统)。
在基于 javascript 的系统上,我必须以完全相同的方式加密密码。我尝试使用节点crypto-js但无济于事。我的代码看起来像这样:
var encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(password), keyCodeWords, {
iv: ivCodeWords,
mode: CryptoJS.mode.CBC, …Run Code Online (Sandbox Code Playgroud)