如何在Nodejs上解密Java AES

阅读: 评论:0

如何在Nodejs上解密Java AES

如何在Nodejs上解密Java AES

我在Java上具有以下用于解密AES加密的代码,我需要在Node.js上执行相同的操作

private static SecretKeySpec secretKey;
private static byte[] key;

public static void setKey(String myKey) {
    MessageDigest sha = null;
    try {
        key = Bytes("UTF-8");
        sha = Instance("SHA-1");
        key = sha.digest(key);
        key = pyOf(key, 16);
        secretKey = new SecretKeySpec(key, "AES");


    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
}

 public static String decrypt(String strToDecrypt, String secret) 
{
    try
    {
        setKey(secret);
        Cipher cipher = Instance("AES/ECB/PKCS5PADDING");
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
        return new String(cipher.Decoder().decode(strToDecrypt)));
    } 
    catch (Exception e) 
    {
        System.out.println("Error while decrypting: " + e.toString());
    }
    return null;
}

我曾尝试在以下代码下使用Crypt,但结果却不尽相同

  var aesDecrypt = (text, password, bit) => {
  var decipher = ateDecipheriv('aes-' + bit + '-ecb', password, Buffer.alloc(0));
  decipher.setAutoPadding(false);
  at([
    decipher.update(text, 'base64'),
    decipher.final()
   ]).toString();
  };

我如何将上述Java代码从上面模仿到Node.js中?

回答如下:

正如James所说,Java代码正在对密码进行哈希处理(并截断)以形成密钥。此外,它[[does使用标准填充。以下用于ASCII数据:

const crypto = require ('crypto'); const mydecrypt = (pw,ctx) => { var h = ateHash('sha1'); h.update(pw,'utf8'); var k = h.digest().slice(0,16); var d = ateDecipheriv('aes-128-ecb', k, Buffer.alloc(0)); at([d.update(ctx,'base64'), d.final()]) .toString(); } console.log(mydecrypt('password','ks7qtmk7kt5riV/Qyy3glQ==')); -> testdata
可能不适用于非ASCII数据。 Java new String(byte[])使用依赖于JVM的编码,该编码可以是UTF8,也可以是不同的,具体取决于您的平台,内部版本和环境,而您没有描述。 OTOH nodejs 始终使用UTF8。您可能需要将其更改为toString(somethingelse)以匹配Java。

本文发布于:2024-05-07 20:31:36,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/1715303627250718.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:如何在   Nodejs   AES   Java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23