我想在javascript中使用Forge库创建两个函数encrypt(message,key)和decrypt(ciphertext,key),但我不想看看示例代码。使用Forge来加密/解密AES
// 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位模式? 你能给我一个更简单的例子吗?
你可以很容易地用你自己的密钥代替生成的密钥,这个例子尽可能小 - 它初始化密码,提交输入数据并获得输出数据。至于增加密钥长度(或使用其他密码模式),似乎你将不得不看看其他[js加密库](http://stackoverflow.com/questions/793812/javascript-aes-encryption)。 –
只需使用长度为32个字节的密钥即可使用AES-256。 – dlongley
为什么这个问题被拒绝?密码学是一门复杂的学科,尤其对于外行人来说更是如此。 Forge是一个很好的lib,但其文档不像其他一些加密库那么容易访问 - 例如crypto-js - https://code.google.com/p/crypto-js/ – arcseldon