【发布时间】:2015-04-30 14:58:07
【问题描述】:
对于给定的项目,我希望使用 AES 256 加密一段数据,然后 RSA 加密密钥。我一直在 ruby 中使用 Forge 和 Encryptor gem,但我似乎无法获得匹配的加密值:
var key = 'strengthstrengthstrengthstrength';
var iv = 'cakecakecakecakecakecakecakecake';
var cipher = forge.aes.createEncryptionCipher(key, 'CBC');
cipher.start(iv);
cipher.update(forge.util.createBuffer("some string"));
cipher.finish();
var encrypted = cipher.output;
console.log(btoa(encrypted.data)); // outputs: CjLmWObDO2Dlwa5tJnRBRw==
然后在 IRB 中:
Encryptor.encrypt 'some string', :key => 'strengthstrengthstrengthstrength', :key => 'cakecakecakecakecakecakecakecake'
Base64.encode64 _
# outputs: C9Gtk9YfciVMJEsbhZrQTw==\n
对 Key & IV 使用字符串值,尝试过:
var key = forge.random.getBytesSync(32);
var iv = forge.random.getBytesSync(32);
然后对他们每个人进行btoa() 调用。在 ruby 端使用Base64.decode64,然后将它们传递给Encryptor.decrypt,但仍然没有运气。
知道我哪里出错了吗?
【问题讨论】:
-
您是否复制粘贴了上面的实际 Encryptor.encrypt 行?第二个 :key 应该是 :iv,不是吗?
-
IV 值太长了,应该使用 16 字节的 IV,而不是 32 个字符的 IV。
标签: javascript ruby encryption aes