色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

js aes算法和java互用

田志增1年前6瀏覽0評論

JavaScript的AES算法和Java的AES算法在加密和解密方面非常相似,因此兩者是可以互用的。在使用上,JavaScript可以通過crypto-js庫調用AES算法,Java可以通過JCE庫調用AES算法。

//JavaScript代碼
const CryptoJS = require("crypto-js");
const key = CryptoJS.enc.Utf8.parse("1234567890123456"); //密鑰
const iv = CryptoJS.enc.Utf8.parse("abcdef0123456789"); //偏移量
const encrypted = CryptoJS.AES.encrypt("Hello, world!", key, {
iv: iv,
mode: CryptoJS.mode.CBC, //使用CBC模式
padding: CryptoJS.pad.Pkcs7 //使用Pkcs7補位算法
}).toString();
console.log(encrypted);
//Java代碼
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public class AES {
public static void main(String[] args) throws Exception {
String key = "1234567890123456";
String iv = "abcdef0123456789";
byte[] encrypted = encrypt("Hello, world!", key, iv);
System.out.println(new String(encrypted));
}
public static byte[] encrypt(String data, String key, String iv) throws Exception {
byte[] keyBytes = key.getBytes("UTF-8");
byte[] ivBytes = iv.getBytes("UTF-8");
byte[] dataBytes = data.getBytes("UTF-8");
SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");
IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);
return cipher.doFinal(dataBytes);
}
}

在使用時,需要注意兩者加密時的模式和補位算法需要對應,否則會導致加密結果不一致。