Encryption AES 256加密解密,

Encryption AES 256加密解密,,encryption,cryptography,aes,cryptojs,node-crypto,Encryption,Cryptography,Aes,Cryptojs,Node Crypto,解密逻辑缺少一些东西,请您协助。 输出未完全解密 Java加密逻辑: publicstaticvoidmain(字符串[]args)抛出NoSuchAlgorithmException、NoSuchPaddingException、InvalidKeyException、ShortBufferException、IllegalBlockSizeException、BadPaddingException{ 试一试{ String in=“这是一条短信”; byte[]input=in.toStri

解密逻辑缺少一些东西,请您协助。 输出未完全解密

Java加密逻辑:

publicstaticvoidmain(字符串[]args)抛出NoSuchAlgorithmException、NoSuchPaddingException、InvalidKeyException、ShortBufferException、IllegalBlockSizeException、BadPaddingException{
试一试{
String in=“这是一条短信”;
byte[]input=in.toString().getBytes(“utf-8”);
字符串加密_KEY=“RW50ZXIgS2V5IEhlcmU=”;
MessageDigest md=MessageDigest.getInstance(“SHA-256”);
byte[]thedigest=md.digest(加密密钥.getBytes(“UTF-8”);
//SecretKeySpec skc=新的SecretKeySpec(最新版,“AES/ECB/PKCS5P添加”);
SecretKeySpec skc=新的SecretKeySpec(最常用的“AES”);
Cipher Cipher=Cipher.getInstance(“AES”);
cipher.init(cipher.ENCRYPT_模式,skc);
byte[]cipherText=新字节[cipher.getOutputSize(input.length)];
int ctLength=cipher.update(输入,0,输入,长度,密文,0);
ctLength+=cipher.doFinal(密文,ctLength);
//字符串查询=Base64.encodeToString(密文,Base64.DEFAULT);
字符串查询=新字符串(java.util.Base64.getEncoder().encode(密文));
System.out.println(“查询”+查询);
//字符串查询=新字符串(编码(密文),StandardCharsets.ISO_8859_1);
}catch(UnsupportedEncodingException e){//TODO自动生成的catch块
e、 printStackTrace();
}
}
Nodejs解密逻辑:

let crypto=require('crypto');
var decipher=crypto.createDecipher('aes-256-ecb',“RW50ZXIgS2V5IEhlcmU=”);
解密。设置自动添加(false);
log(decipher.update(“EncyptedText”、“base64”、“utf8”)+decipher.final(“utf8”));

为什么选择调用
setAutoPadding(false)
“AES/ECB/PKCS5Padding”
?“未完全解密”是什么意思?(请注意,这是一种非常不安全的加密方法。但这可能超出了您要问的问题。)您能否建议解密逻辑是否缺少任何内容。1。创建一个SHA256-of
RW50ZXIgS2V5IEhlcmU=
并将其用作键。2.使用而不是
createDecipher
,因为后者根据给定密码生成密钥,但使用不同的算法(而不是SHA256)。3.在
createDecipheriv
中,将IV设置为null,因为ECB不使用IV.4。不要禁用填充(如注释中所述)。关于Java代码:ECB是不安全的。更好的选择是CBC或GCM。