首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript与Java代码Cipher.doFinal(byte[])的等效代码?

问Javascript与Java代码Cipher.doFinal(byte[])的等效代码?
EN

Stack Overflow用户
提问于 2014-07-06 04:04:44
回答 1查看 2K关注 0票数 3

我正在将一些服务器端Java代码迁移到一个新的NodeJS服务器上。我在Javascript中寻找与Java的Cipher.doFinal(byte[])相同的方法调用,注意到我不能使用NodeJS缓冲区,因为它们不支持负字节值。因此,为了进行加密,我需要一个接受正负数数组的方法。

以下是我目前所有与这个问题相关的内容:

节点JS / Javascript:

var crypto = require('crypto'); var cipher = crypto.createCipher('aes256',key);

Java (javax.crypto.Cipher):

代码语言:javascript
复制
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方法中相同的结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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;

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24592607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档