【问题标题】:How to encrypt a string in vanilla JS? [closed]如何在 vanilla JS 中加密字符串? [关闭]
【发布时间】:2021-10-20 13:08:36
【问题描述】:

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

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

我想在 vanilla JavaScript 中执行此操作,而不使用 3rd 方库或使用 MIT 许可等许可的 3rd 方库。例如,google 的 CryptoJS 不是免费用于商业用途的,而 jakubzapletal/crypto-js 是在 MIT 许可下许可的,但是基于 google 的 CryptoJS,所以对我也不起作用。

【问题讨论】:

  • whaaaat 现在我的问题有问题。它是具体的,它不是很明显的事情,并且不是重复的?
  • CryptoJS 可免费用于商业用途。它在BSD 3 Clause license 下获得许可。此外,您是否接受使用 EcmaScript 规范之外的标准 Web API 的答案?
  • “我想在原版 JavaScript 中执行此操作,并且不使用 3rd 方库”——这会使你的问题偏离主题,因为编写整个 AES 库过于广泛——“或使用第三方库根据 MIT 许可证之类的许可获得许可。” - 这使它偏离主题,因为外部资源请求是偏离主题的。
  • @D. Pradal 我想要一个适用于所有主要浏览器的解决方案,如果可能的话,我可以在单个 js 文件中复制/粘贴或下载它,我可以忘记它 - 仅此而已。而且我知道,如果我从教程或其他东西中使用某人的实现,它可能是有缺陷的

标签: javascript encryption


【解决方案1】:

假设您在 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
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-01
    • 2012-11-30
    • 2023-04-01
    • 2013-02-15
    • 2023-01-12
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多