三个参数都是字节数组 返回的结果是16字节的数组 后端java可以解密 使用js实现代码
时间: 2024-02-26 15:57:09 浏览: 125
好的,以下是使用JavaScript实现AES加密和解密的示例代码:
```javascript
// AES加密函数
function encrypt(data, key, iv) {
let cipher = window.crypto.subtle.importKey(
'raw', key, {name: 'AES-CBC'}, false, ['encrypt']
);
let encrypted = window.crypto.subtle.encrypt(
{name: 'AES-CBC', iv: iv}, cipher, data
);
return encrypted;
}
// AES解密函数
function decrypt(data, key, iv) {
let cipher = window.crypto.subtle.importKey(
'raw', key, {name: 'AES-CBC'}, false, ['decrypt']
);
let decrypted = window.crypto.subtle.decrypt(
{name: 'AES-CBC', iv: iv}, cipher, data
);
return decrypted;
}
// 示例用法
let data = new Uint8Array([1, 2, 3, 4, 5]);
let key = new Uint8Array([6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]);
let iv = new Uint8Array([22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37]);
let encrypted = encrypt(data, key, iv);
let decrypted = decrypt(encrypted, key, iv);
// 将加密和解密后的数据转换为16字节的数组
let encrypted_array = new Uint8Array(await encrypted);
let decrypted_array = new Uint8Array(await decrypted);
```
这段代码中,使用了Web Crypto API提供的AES-CBC算法进行加密和解密。在示例用法中,我们传递了一个名为"data"的字节数组,一个名为"key"的密钥字节数组和一个名为"iv"的加密偏移量字节数组。加密和解密函数返回的是一个Promise对象,需要使用await关键字等待它们完成。最终加密和解密后的数据也是一个Uint8Array类型的字节数组,可以通过这些数组进行后续的处理。
阅读全文