用java如何实现 在密钥长度为16,24,32字节是,一下代码结果是一样
[JavaScript] 纯文本查看 复制代码[mw_shl_code=javascript,true]var key = CryptoJS.enc.Utf8.parse('11223344556677889900112233445566');
var iv = CryptoJS.enc.Utf8.parse('1122334455667788');
var e = CryptoJS.AES.encrypt('111', key, {
iv: iv
, mode: CryptoJS.mode.CBC
}).ciphertext;
e = CryptoJS.enc.Base64.stringify(e).toString();
console.info(e);[/mw_shl_code]
[Java] 纯文本查看 复制代码try {
String keyString = "11223344556677889900112233445566";
String ivString = "1122334455667788";
byte[] keyBytes = keyString.getBytes("UTF-8");
byte[] ivBytes = ivString.getBytes("UTF-8");
SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");
IvParameterSpec iv = new IvParameterSpec(ivBytes);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
cipher.init(Cipher.ENCRYPT_MODE, key, iv);
byte[] encryptedBytes = cipher.doFinal("111".getBytes("UTF-8"));
// 将密文转换为 Base64 编码
String encryptedBase64 = Base64.encodeBase64URLSafeString(encryptedBytes);
// 输出结果
System.out.println("Encrypted (Base64): " + encryptedBase64);
} catch (Exception e) {
e.printStackTrace();
}
如果密钥长度大于32字节,js代码可以正常加解密,java不能正常执行,提示 Key length not 128/192/256 bits.
[JavaScript] 纯文本查看 复制代码[mw_shl_code=javascript,true]var key = CryptoJS.enc.Utf8.parse('1122334455667788990011223344556677889900161f4311');
var iv = CryptoJS.enc.Utf8.parse('1122334455667788');
var e = CryptoJS.AES.encrypt('111', key, {
iv: iv
, mode: CryptoJS.mode.CBC
}).ciphertext;
e = CryptoJS.enc.Base64.stringify(e).toString();
console.info(e);[/mw_shl_code]