javascript - 使用 Forge 加密/解密 AES

标签 javascript encryption aes

我想使用 Forge 创建两个函数 encrypt(message, key) 和 decrypt(ciphertext, key) javascript 中的库,但我不理解示例代码。

// generate a random key and IV
var key = forge.random.getBytesSync(16);
var iv = forge.random.getBytesSync(16);

// encrypt some bytes using CBC mode
// (other modes include: CFB, OFB, and CTR)
var cipher = forge.aes.createEncryptionCipher(key, 'CBC');
cipher.start(iv);
cipher.update(forge.util.createBuffer(someBytes));
cipher.finish();
var encrypted = cipher.output;
// outputs encrypted hex
console.log(encrypted.toHex());

// decrypt some bytes using CBC mode
// (other modes include: CFB, OFB, and CTR)
var cipher = forge.aes.createDecryptionCipher(key, 'CBC');
cipher.start(iv);
cipher.update(encrypted);
cipher.finish();
// outputs decrypted hex
console.log(cipher.output.toHex());

// generate a password-based 16-byte key
var salt = forge.random.getBytesSync(128);
var derivedKey = forge.pkcs5.pbkdf2('password', salt, numIterations, 16);

我应该在哪里使用我自己的 key ? 我在哪里可以选择 256 位模式? 你能给我一个更简单的例子吗?

最佳答案

Where should I use my own key?

我没有使用过那个库,但它看起来很简单。将这部分放在顶部:

// generate a random key and IV
var key = forge.random.getBytesSync(16);

然后像这样输入你的 key :

// generate a random key and IV
var key = neverGuessMahKeyIs1234;

如果需要,对 iv 执行相同的操作。


Where can I choose 256 bit mode?

好的,所以首先要处理对称加密,它具有所需大小的 key 长度。因为它是对称的,所以它用于加密和解密端,这就是您发布的代码似乎所做的。我说“似乎”是因为我相信图书馆的 native 功能与您发布的一样。 因此,您发布的代码似乎使用(如我上面所示)128 位 (16*8=128)。如果你想要一个随机的 256,那么只需使用:

var key = forge.random.getBytesSync(32);

或者自己制作 256 位长的 key 。

关于javascript - 使用 Forge 加密/解密 AES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23317020/

相关文章:

javascript - 使用 scrollbars=no 在 window.open 之后启用浏览器滚动条

javascript - 为什么 JavaScript 中的微任务和(宏)任务有区别?

ruby - 为什么 Ruby base64 编码字符串与所有其他 base64 编码字符串不同?

php - 正确使用 php openssl_encrypt 的方法

java - (Android/Java)创建RSA私钥实例

encryption - AES-128-ECB 和 OpenSSL 的测试向量

javascript - Delphi 中的 AES 编码 XE4 Javascript 中的解码

javascript - 改变 map 上的颜色 D3

javascript - 使用 NodeJS 和 Electron 使用操作系统的默认应用程序(带有 Word 的 docx 等)打开外部文件

database - 在哪里放置我的数据库