使用forge进行AES-CBC加密

官网例子(自己补充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操作即可

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 之前一直对加密相关的算法知之甚少,只知道类似DES、RSA等加密算法能对数据传输进行加密,且各种加密算法各有...
    Henryzhu阅读 3,050评论 0 14
  • 本文主要是前面《java实现双向RSA + AES加密》的补充,只补充新增的代码, JDK中自带了椭圆曲线的签名,...
    终结者_8d5e阅读 3,820评论 0 1
  • 1.一坐下就要开始动笔写-On just sitting down and doing it. 2.彻底抛弃“做好...
    太阳给你阅读 202评论 0 0
  • 语音版: Alicia的起与落 Alicia在我的印象中,曾经是一位骄傲的女人。她来自瑞士,有着高挑的身材;一头金...
    Thebookworm新西兰阅读 702评论 15 10
  • 1、 淡淡烟岚六月波,女真蒲水绿婆娑。 今来百里寻诗味,千载辽金问几何? 2、 春风一去夏风来,何处当年点将台? ...
    北溟鱼_0ba3阅读 475评论 0 0