官网例子(自己补充cryptoData哈)
随机生成的16位key和iv(用来补位的)
function encryptByForge() {
var key = forge.random.getBytesSync(16);
var iv = forge.random.getBytesSync(16);
var cipher = forge.cipher.createCipher('AES-CBC', key);
cipher.start({
iv: iv
});
cipher.update(forge.util.createBuffer(JSON.stringify(cryptoData)));
cipher.finish();
// outputs encrypted hex
return forge.util.encode64(cipher.output.getBytes());
}
如果同crypto-js的结果不同,你可以尝试把官网的output.toHex换成getBytes再用base64编码。
当key 和 iv是协商给定的怎么办
key为server base64对二进制编码下发的
iv是16为随机字符串 要回传给server的
const keyBytes = forge.util.createBuffer(forge.util.decode64(key), 'binary').getBytes(16);
const encodeIv = forge.util.encodeUtf8(iv);
需要将key 转为16位bytes,对iv做相应的encodeUtf8操作即可