印象笔记中的笔记文本加密数据结构
In note text encrypted data structure in Evernote
我是几个 evernote 扩展的作者,我不想使用加密文本,在我这边创建它们并使用 enml 结构和加密添加到笔记中。
但是,我无法弄清楚加密 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 upper-byte 的 HEX-representation。
一个警告:在计算 CRC32 时,您可能需要使用 -1
(0xFFFFFFFF
) 对其进行异或,因为在野外有不同的 CRC32 实现可能会也可能不会执行此最终异或.
我是几个 evernote 扩展的作者,我不想使用加密文本,在我这边创建它们并使用 enml 结构和加密添加到笔记中。
但是,我无法弄清楚加密 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 upper-byte 的 HEX-representation。
一个警告:在计算 CRC32 时,您可能需要使用 -1
(0xFFFFFFFF
) 对其进行异或,因为在野外有不同的 CRC32 实现可能会也可能不会执行此最终异或.