我正在构建一个笔记应用程序 . 我想向我的用户重新保证他们的数据在线存储时是加密的(Firebase Firestore),除了他们之外没有人可以读取它 . 我希望应用程序保持简单,所以没有登录,没有密码(现在) .

我正在考虑使用crypto-js来完成这项工作 . 它支持许多不同的加密类型 . 我正在看的是AES:

// Encrypt
var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123');

// Decrypt
var bytes  = CryptoJS.AES.decrypt(ciphertext.toString(), 'secret key 123');
var plaintext = bytes.toString(CryptoJS.enc.Utf8);

AES使用密钥 . 我想做的是在客户端生成并存储该密钥,在数据离开互联网之前对其进行加密,并在数据恢复时对其进行解密 .

我的问题是

  • 是否有其他加密类型更符合要求?这些笔记可能会成为大块文本 . AES在这些情况下表现良好吗?

  • 这种策略是否有意义?显然,Firestore已经对数据进行了加密,但由于没有登录,任何具有对象ID的人都可以读取它(管理员 - 我可以查看数据库并读取敏感数据)