CryptoJS 加密

CryptoJS 加密

CryptoTS不太完善 建议使用CryptoJS
typescript版 请安装 yarn add @type/crypoto-js

AES区块加密标准算法,
三种常见方案:

AES-128,AES-192,AES-256 区别在于密钥的长度不同

AES-128长度为16bytes(128bit/8);

AES-192长度为24bytes(192bit/8);

AES-256长度为32bytes(256bit/8);

密钥越长,安全强度越高,但伴随运算轮数的增加,带来的运算开销就会更大,所以用户应根据不同应用场合进行合理选择。

五种加密模式:CBC、ECB、CTR、OCF、CFB

其中较为常用的为CBC,ECB;

CBC模式: 密码分组链接模式.先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密

ECB模式:即电码本模式.将整个明文分成若干段相同的小段,然后对每一小段进行加密。

了解更多可以参考图文:https://www.jianshu.com/p/79a225c2650e

在应用AES算法对线路传输数据加密过程中,若想保证密文的整体变化,要保证每块明文数据都是变化的

参考:http://www.elecfans.com/d/536259.html

加密中间件
async (ctx,next)=>{}
ctx.request是context经过封装的请求对象,ctx.req是context提供的node.js原生HTTP请求对象,同理ctx.response是context经过封装的响应对象,ctx.res是context提供的node.js原生HTTP响应对象。
ctx.state相当于一个全局变量,在各个中间件间传递

await next(); //成功后,遍历下一个中间件,异步处理,本身async函数也是一个promise对象,故使用await有效


import { extend, ResponseError, OnionMiddleware } from 'umi-request';
const _cipherHandlerMiddleware: OnionMiddleware = async (ctx, next) => {
  ctx.req.options.data = aes192CBCEncrypt(ctx.req.options.data);
  await next();
  ctx.res = aes192CBCDecrypt(ctx.res);
}

umi-request的配置文件中给出了中间件的类型

export type OnionMiddleware = (ctx: Context, next: () => void) => void;
export interface Context {
  req: {
    url: string;
    options: RequestOptionsInit;
  };
  res: any;
}

参考案例:https://blog.csdn.net/its_my_dream/article/details/53041666

CryptoJS 加密 ==> CryptoTS.ɵo == CryptoJS.enc.Latin1=> .ɵo为配置文件中Latin1的别名;

var key = CryptoJS.enc.Latin1.parse('1234567887654321'); //为了避免补位,直接用16位的秘钥
var iv = CryptoJS.enc.Latin1.parse('1234567887654321'); //16位初始向量

adding: CryptoJS.pad.ZeroPadding == padding: CryptoTS.pad.NoPadding//不够16位的情况补0至16位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值