aes.js JS实现 加密 解密

 用到的库:aes-js 方地址https://github.com/ricmoo/aes-js

 原本在小程序中是计划使用 CryptoJS 的,但是考虑到aes-js也可以满足并且size也小。

//秘钥
var pass = "25bc2e22f4da436422ec6a428bdf4db1";
//秘钥转成字节
var key = aesjs.utils.utf8.toBytes( pass );
//生成一个随机数
var random = Math.random();
//生成一个16位的偏移量
var tmpiv = random.toString(32).slice(-8) + pass.substr(random*18, 8 );
var iv = aesjs.utils.utf8.toBytes( tmpiv );
// 需要加密的内容
var text = 'Text may be any length you wish, no padding is required.';
//把明文转成字节
var textBytes = aesjs.utils.utf8.toBytes(text);
//通过16位的偏移量和密钥转成的字节生成一个对象
var aesOfb = new aesjs.ModeOfOperation.ofb(key, iv);
//通过这个对象把转成字节的明文加密
var encryptedBytes = aesOfb.encrypt(textBytes);
//要打印或存储二进制数据,可以将其转换为十六进制
var encryptedHex = aesjs.utils.hex.fromBytes(encryptedBytes);
console.log(encryptedHex+tmpiv);


//解密
var val = "8fbb126540e8e88fa9d4b150038b840e220194";
var _iv = val.slice(-16);
var _data = val.substr(0,val.length - 16);
var _ivByte = aesjs.utils.utf8.toBytes( _iv );
var aesOfb = new aesjs.ModeOfOperation.ofb(key, _ivByte);
//吧密文16进制转二进制
var _dataByte = aesjs.utils.hex.toBytes( _data );
//二进制转
var _decryptval = aesOfb.decrypt(_dataByte);
var _textBytes = aesjs.utils.utf8.fromBytes(_decryptval);
console.log(_textBytes);

推荐六里桥六里小说网站: http://www.llqll.com

猜你喜欢

转载自blog.csdn.net/zhanghuanhuan1/article/details/102970681