【发布时间】:2020-02-18 14:45:58
【问题描述】:
我正在尝试在 Node JS 中复制 Java 代码以用于 AES 加密和解密。
Java 代码
SecretKeySpec skeySpec;
String key = "a4e1112f45e84f785358bb86ba750f48";
public void encryptString(String key) throws Exception {
try {
skeySpec = new SecretKeySpec(key.getBytes(), "AES");
cipher = Cipher.getInstance("AES");
cipher.init(1, skeySpec);
byte encstr[] = cipher.doFinal(message.getBytes());
String encData = new String(encstr, "UTF-8");
System.out.println(encData);
} catch (NoSuchAlgorithmException nsae) {
throw new Exception("Invalid Java Version");
} catch (NoSuchPaddingException nse) {
throw new Exception("Invalid Key");
}
}
节点 JS
var encryptKey = function (text) {
var cipher = crypto.createCipher('aes256', 'a4e1112f45e84f785358bb86ba750f48');
var crypted = cipher.update(text,'utf8', 'hex')
crypted += cipher.final('hex');
console.log(crypted);
return crypted;
}
我无法在 Node JS 中获得准确的 密文,而我在 Java 中获得了该信息。
【问题讨论】:
-
Whey-hey,另一个绝对一切出错的加密示例。 ECB 模式,作为字符串的密钥(十六进制,但未解码),糟糕的异常处理甚至没有注册原因并使用错误消息和使用异常等,明文编码错误以及为什么不使用 ECB 来保证传输模式的安全性。每行至少有一个错误,请勿使用上述代码。
标签: javascript java node.js cryptography cryptojs