我正在将一些服务器端Java代码迁移到一个新的NodeJS服务器上。我在Javascript中寻找与Java的Cipher.doFinal(byte[])相同的方法调用,注意到我不能使用NodeJS缓冲区,因为它们不支持负字节值。因此,为了进行加密,我需要一个接受正负数数组的方法。
以下是我目前所有与这个问题相关的内容:
节点JS / Javascript:
var crypto = require('crypto'); var cipher = crypto.createCipher('aes256',key);
Java (javax.crypto.Cipher):
Cipher cipher;
SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
try {
cipher = Cipher.getInstance("AES");
} catch (NoSuchAlgorithmException e) {
} catch (NoSuchPaddingException e) {
}try {
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
} catch (InvalidKeyException e) {
}在后面的Java代码中,我调用这个方法,其中Iv表示初始化向量:byte[] newIv = cipher.doFinal(myIv);
如何在JavaScript中获得与在doFinal方法中相同的结果?
发布于 2014-07-10 03:43:10
原来,您可以按以下方式放置一个空的IV:
var cipher = require('crypto').createCipheriv('aes-256'ecb', key, '');
至于替换方法,只需将旧IV暂时存储为新IV,然后尝试使用旧IV更新新IV。下面是在NodeJS中使用作为缓冲区创建的初始化向量的一些上面代码的样子:
var newIV = oldIV.slice(); newIV = cipher.update(newIV); oldIV = newIV;
https://stackoverflow.com/questions/24592607
复制相似问题