js 中 AES加密代码,ECB、PKCS7、128bits、utf-8,具体的代码
时间: 2024-12-11 17:44:57 浏览: 10
在JavaScript中,我们通常不会直接编写AES加密的原生代码,因为浏览器的安全策略限制了对高级加密算法的支持。但是,我们可以借助一些加密库,如`crypto-js`,它提供了一个易于使用的API来实现AES加密。
以下是一个基本的例子,展示了如何使用`crypto-js`库进行AES-128-ECB模式的加密( ECB = Electronic Codebook,电子书模式,用于简单明文,不适合大量数据,因为它会将每个块独立加密),并使用UTF-8编码的字符串:
```javascript
// 引入crypto-js库
const CryptoJS = require('crypto-js');
// 定义密钥和模式
const key = CryptoJS.lib.WordArray.create([0x00, 0x01, 0x02, 0x03, ...]); // 16字节(128位)密钥
const mode = CryptoJS.mode.ECB; // ECB模式
// UTF-8编码的字符串
const plaintext = 'Hello, world!'.toString('utf8');
// 对字符串进行加密
const encrypted = CryptoJS.AES.encrypt(plaintext, key, { mode });
// 输出加密后的十六进制字符串
console.log(encrypted.toString(CryptoJS.enc.Hex));
```
对于PKCS#7填充(Padding for PKCS7),默认的`CryptoJS.AES.encrypt`会自动添加必要的填充,无需额外处理。如果你需要手动处理,可以这样做:
```javascript
const paddingSize = (16 - (plaintext.length % 16)) || 16;
const paddedPlaintext = CryptoJS.lib.WordArray.pad(new Buffer(plaintext, 'utf8'), paddingSize);
const encryptedPadded = CryptoJS.AES.encrypt(paddedPlaintext, key, { mode });
```
阅读全文