AES 加密解密
AES(高级加密标准)是一种广泛使用的对称加密算法。
aes.encrypt(text, key, iv)
新增于:Hamibot 1.6.4
将字符串进行 AES 加密,Base64 编码。
参数
名称 | 类型 | 描述 |
---|---|---|
text | string | 要加密的文本 |
key | string | 密钥 |
iv | string | IV,必须 16 位长度的字符串,可用 aes.generateIV() 生成 |
示例
js
// 加密测试
var text = 'Hello Hamibot!';
var key = 'mySecretKey12345';
var iv = 'initializationVe'; // 必须 16 位长度的字符串
var encrypted = aes.encrypt(text, key, iv); // 需要 Hamibot 1.6.4 及以上版本
log('加密结果:', encrypted); // => Jwm8raYBSDExFLL+Hu0eww==
// 解密测试
var decrypted = aes.decrypt(encrypted, key, iv); // 需要 Hamibot 1.6.4 及以上版本
log('解密结果:', decrypted); // => Hello Hamibot!
hamibot.exit();
aes.decrypt(encrypted, key, iv)
新增于:Hamibot 1.6.4
将字符串(Base64 编码)进行 AES 解密。
参数
名称 | 类型 | 描述 |
---|---|---|
encrypted | string | 已加密的文本 |
key | string | 密钥 |
iv | string | IV,必须 16 位长度的字符串,可用 aes.generateIV() 生成 |
示例
js
// 加密测试
var text = 'Hello Hamibot!';
var key = 'mySecretKey12345';
var iv = 'initializationVe'; // 必须 16 位长度的字符串
var encrypted = aes.encrypt(text, key, iv); // 需要 Hamibot 1.6.4 及以上版本
log('加密结果:', encrypted); // => Jwm8raYBSDExFLL+Hu0eww==
// 解密测试
var decrypted = aes.decrypt(encrypted, key, iv); // 需要 Hamibot 1.6.4 及以上版本
log('解密结果:', decrypted); // => Hello Hamibot!
hamibot.exit();
aes.generateIV()
新增于:Hamibot 1.6.4
随机生成 16 位长度的字符串,32-126 的 ASCII 字符
示例
js
var iv = aes.generateIV();
log(iv);
hamibot.exit();
自动 IV 嵌入的 AES 加解密实现
封装 AES 加密函数,实现自动生成 IV 并组合到加密结果中
特点:
- IV 自动生成且包含在加密结果中
- 加密返回字符串格式:[16 位 IV][加密文本]
- 解密时自动分离 IV 和加密内容
⚠️ 注意:密钥(key)需要自行保存,加解密需使用相同密钥。
js
// 自动生成 IV 的 AES 加密 (返回格式:IV+加密文本)
function aesEncrypt(text, key) {
let iv = aes.generateIV(); // 自动生成 16 位 IV
let encrypted = aes.encrypt(text, key, iv);
return iv + encrypted; // 组合 IV 和密文
}
// 自动提取 IV 的解密函数
function aesDecrypt(combined, key) {
let iv = combined.substring(0, 16); // 提取前 16 位作为 IV
let encrypted = combined.substring(16); // 剩余部分为密文
return aes.decrypt(encrypted, key, iv);
}
// 使用示例
var text = 'Hello Hamibot!';
var key = 'mySecretKey12345';
var encrypted = aesEncrypt(text, key);
log('加密结果:', encrypted); // => 随机
var decrypted = aesDecrypt(encrypted, key);
log('解密结果:', decrypted); // => Hello Hamibot!
hamibot.exit();