首页 > 解决方案 > 将JAVA中的aes加密转换为节点

问题描述

我有一个java脚本

private static final String ALGO = "AES";

public static String encrypt(String Data,String secretKeyPhrase) throws Exception {

    Key key = new SecretKeySpec(secretKeyPhrase.getBytes(), ALGO);

    Cipher c = Cipher.getInstance(ALGO);
    c.init(Cipher.ENCRYPT_MODE, key);
    byte[] encVal = c.doFinal(Data.getBytes());
    String encryptedValue = Base64.getEncoder().encodeToString(encVal);
    encryptedValue= URLEncoder.encode(encryptedValue, "UTF-8");
    return encryptedValue;
}


public static void main(String [] ar) throws Exception{
    String result2=AESUtil.encrypt("3483", "BDFHJLNPpnljhfdb");
    System.out.println(result2);
}

我需要在节点中复制它我这样做

var ciphertext = CryptoJS.AES.encrypt('3483', 'BDFHJLNPpnljhfdb').toString();

控制台.log(密文);

在 java 结果中告诉我

3483

sAllhJ7zLxBKr8hJ7tLf9w%3D%3D

但在节点

3483

U2FsdGVkX19Z/mnjJy3hYDcXfWnH5eayYngWMtUT1lw=

我做错了什么?

提前致谢。

标签: javanode.jsencryptionaes

解决方案


嗨我可以用节点加密这是脚本

function encrypt(plaintext) {
  var data = plaintext;
  var iv = new Buffer(0);
  const key = 'BDFHJLNPpnljhfdb'
  var cipher = crypto.createCipheriv('aes-128-ecb',new Buffer(key),new Buffer(iv))
  var crypted = cipher.update(data,'utf-8','base64')
  crypted += cipher.final('base64')
  return crypted;
}

结果是 sAllhJ7zLxBKr8hJ7tLf9w==


推荐阅读