【发布时间】:2015-08-13 19:50:23
【问题描述】:
我正在尝试将 Java(简单)加密算法移植到 Node JS。我需要能够解密/加密从 Java 端加密/解密的内容。
我被困在最开始,密码的初始化。
在 Java 中,我使用 SecretKeySpec 获取密钥,使用 IvParameterSpec 获取初始化向量:
public CryptStuff(String password) throws zillion_exceptions {
if (password==null) throw new InvalidKeyException("No encryption password is set!");
key = new SecretKeySpec(password.getBytes("UTF-8"), "AES");
cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
ivSpec=new IvParameterSpec(new byte[cipher.getBlockSize()]);
cipher.init(Cipher.ENCRYPT_MODE, key, ivSpec);
}
NodeJS 需要一个 Key Buffer 和一个 IV 缓冲区,但是,我不知道如何从头开始计算它们:
var mCrypto = require('crypto'),
key=[0,0,0,0,0,0,.......],
iv=[0,0,0,0,0,.........];
function init (password) {
// generate key from password
// generate IV from blocksize?
var aesCipher = mCrypto.createCipheriv("aes-????????", (new Buffer(key)), (new Buffer(iv)));
.
.
.
}
另外,AES/CBC/PKCS5Padding 的匹配算法字符串是什么?
【问题讨论】:
标签: node.js encryption cryptography aes padding