使用Forge加密/解密AES

时间:2014-04-26 22:06:38

标签: javascript encryption aes

我想在javascript中使用Forge库创建两个函数encrypt(message,key)和decrypt(ciphertext,key),但我没有找到示例代码。

// 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);

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

1 个答案:

答案 0 :(得分:2)

  

我应该在哪里使用自己的密钥?

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

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

把钥匙放进去:

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

如果您愿意,请对iv执行相同操作。


  

我在哪里可以选择256位模式?

好的,首先你处理对称加密,其密钥长度为所需大小。因为它是对称的,所以它在加密和解密两端都使用,这就是你发布的代码似乎所做的。我说'似乎'是因为我相信图书馆的原生功能就像你发布它们一样。 因此,您发布的代码似乎使用(如上所示)128位(16 * 8 = 128)。如果你想要一个随机的256,那么只需使用:

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

或者只创建256位长的密钥。

相关问题