小编Kho*_*elo的帖子

如何限制PouchDB修订或永久删除修订

我使用的是PouchDBwebsql适配器或科尔多瓦的应用程序(我使用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)

database sqlite cordova pouchdb

7
推荐指数
1
解决办法
2399
查看次数

将 C# Cryptography.Rijndael 加密转换为 Javascript(首选 crypto-js)

我有两个共享用户数据库的系统,因此身份验证需要相同。

密码当前使用 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)

javascript c# rijndael cryptojs

1
推荐指数
1
解决办法
5329
查看次数

标签 统计

c# ×1

cordova ×1

cryptojs ×1

database ×1

javascript ×1

pouchdb ×1

rijndael ×1

sqlite ×1