在笔记文本加密数据结构在印象笔记中



我是几个印象笔记扩展的作者,我不想使用加密文本,在我的终端创建它们并使用enml结构和en-crypt添加到笔记中。

但是,我无法弄清楚加密 CDATA 的结构。

如果在导出注释后查看 .enex 文件,则加密文本的 enml 元素如下所示:

<en-crypt hint="My Cat's Name">NKLHX5yK1MlpzemJQijAN6C4545s2EODxQ8Bg1r==</en-crypt>

我已经通读了这个 https://help.evernote.com/hc/en-us/articles/208314128-What-type-of-encryption-does-Evernote-use 这解释了密钥是用 PBKDF2 派生的,加密是用独特的 Salt AES-CBC 256 位方法完成的,但是,查看上面的例子,我无法弄清楚这些数据是如何存储在那里的。

如果我数得对,有两个唯一的盐和一个 IV,以及要存储在那里的加密文本。所以我的问题是,如何利用这个块?可能有一种标准方法将所有信息存储在一个base64块中。但我不是加密专家,所以任何一点帮助都值得赞赏。

谢谢。

对于旧的基于 RC2 的加密(如果您的<en-crypt>标签没有cipher="AES"属性,这是基于 RC2 的加密),算法大致如下所示:

decodedString = RC2.decrypt(Base64.decode(encodedString), MD5.hash(UTF8.encode(passphrase)), 64);

在解码字符串中,字符串的前 4 个字符是解码字符串其余部分的 CRC32 上字节的十六进制表示形式。

需要注意的是:在计算CRC32时,您可能需要使用-1(0xFFFFFFFF)进行XOR,因为CRC32在野外有不同的实现可能会也可能不会执行最终的XOR。

最新更新