如何在 vanilla JS 中加密字符串?

How to encrypt a string in vanilla JS?

我希望能够使用像 AES 这样的块密码来加密和解密字符串。

var jsn = JSON.stringify(Json);
var encrypted = AesEncrypt(jsn, pass);
saveStringToFile(encrypted, fnm);

我想在 vanilla JavaScript 中执行此操作,并且不使用第 3 方库或使用 MIT 许可等许可的第 3 方库。例如,google 的 CryptoJS 不是免费用于商业用途,而 jakubzapletal/crypto-js 是在 MIT 许可下获得许可,但基于 google 的 CryptoJS,因此不能用于我也是。

假设您是 运行 Web 浏览器中的代码,您可以使用 Web Cryptography API:

const te = new TextEncoder();

window.crypto.subtle.encrypt(
  {
    name: "AES-GCM", // CTR and CBC modes are also available.
    iv // The initialization vector.
  },
  key, // The CryptoKey. You can get one with window.crypto.subtle.importKey().
  te.encode("Hello, World!"); // The data to encrypt
);