crypto-js遇到的坑
最近在做H5网站,用websocket跟后台交互时,需要对数据进行加密,于是选了crypto-js组件,GitHub上api也不少,写的也清晰,但实际使用上会遇到不少坑:
- 加密解密时,传入的密钥key,需要转换为特定数组,不能是字符串
- 加密时,传入的明文需转换为特定数组
- 解密时,密文数组还要做特别的封装后,才能正确解密
let aes_option = {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
};
/**
* @method AES加密
* @param {string} txt 明文字符串
* @param {string} key 密钥
* @return {string} 加密后的字符串
*/
function aesEncrypt(txt, key){
let uTxt = CryptoJS.enc.Utf8.parse(txt);
let uKey = CryptoJS.enc.Utf8.parse(key);
let result = CryptoJS.AES.encrypt(uTxt, uKey, aes_option);
return result.toString();
};
/**
* @method AES解密
* @param {array} byteArray 密文二进制流
* @param {string} key 密钥
* @return {string} 解密后的字符串
*/
function aesDecrypt(byteArray, key){
let uTxt = CryptoJS.lib.WordArray.create(byteArray);
let uKey = CryptoJS.enc.Utf8.parse(key);
let bytes = CryptoJS.AES.decrypt({ciphertext:uTxt}, uKey, aes_option);
let result = CryptoJS.enc.Utf8.stringify(bytes).toString();
return result;
};
crypto-js遇到的坑的更多相关文章
- 前端使用crypto.js进行加密
前端使用crypto.js进行加密 https://www.cnblogs.com/lz2017/p/8046816.html 最近我在前端使用Cookies保存密码的时候需要前端来进行加密工作, ...
- Node.js的那些坑——如何让异步并发方法同步顺序执行(for循环+异步操作)
1 前言 nodejs的回调,有时候真的是让人又爱又恨的,当需要用for循环把数据依次存入数据库,但是如果使用正常的for循环,永远都是最后一次值的记录,根本不符合要求. 解决此方案有几种,例如闭包( ...
- Nuxt.js的踩坑指南(常见问题汇总)
本文会不定期更新在nuxt.js中遇到的问题进行汇总.转发请注明出处,尊重作者,谢谢! 强烈推荐作者文档版踩坑指南,点击跳转踩坑指南 在Nuxt的官方文档中,中文文档和英文文档都存在着不小的差异. 1 ...
- js的一些坑,持续增加,学习js应该注意的问题
大家来补充 1.变量类型模糊,容易出现问题; var a='1',b=1; a==b; //true a===b; //false 2.全局变量与函数内部变量同名时,在函数内部声明变量,声明位置虽然在 ...
- js类型转换的坑
JS的灵活 说好听是说JS灵活, 说不好听就是JS的坑太多, JS类型转换就是一个大坑, JS的类型包括了原始类型的[null, undefined, String ,Number, Boolean] ...
- 一些angular/js/ts的坑和吐槽
------20190318 ------------- 回头看,很多槽点已经随着升级改掉了 绑定string字面值到子组件@Input <app-overlay-static [name] ...
- js 面试的坑
JavaScript事件属性event.target <!DOCTYPE html> <html> <head> <meta charset="UT ...
- 那些在BAE上部署node.js碰到的坑
在BAE上使用node.js半年多了,其中碰到了不少因为BAE云环境限制碰到的坑 写下来大家碰到了,也不用那么麻烦的去看好几天代码了,直接对症下药 官方公布的坑有: BAE是使用package.jso ...
- 微信小程序使用pako.js的踩坑笔记
问题 今天组长跟我们讨论了个问题,说是文章存储占用有点大,消耗宽带流量费,让我看看能不能找个方法解决一下(文章存储的是html字符串).第一反应是没什么头绪,能想到的就是将相同的字符串替换成一个标识之 ...
- 记录一下JS正则的坑
JS正则的单行模式有点问题 总之 . 符号匹配换行符号会有问题 暂时的解决方案是 html = html.replace(/[\r\n]/g,""); 附加一个 html = ht ...
随机推荐
- UIApplication直接应用
/************ 当程序载入后执行,应用程序启动入口 *****************************/ - (BOOL)application:(UIApplication *) ...
- 算法训练 最大的算式(DP)
问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大.因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号 ...
- day-15递归与函数
生成器send方法 send的工作原理 1.send发生信息给当前停止的yield 2.再去调用__next__()方法,生成器接着往下指向,返回下一个yield值并停止 # 案例: persons ...
- 调停者模式Mediator(中介者模式)详解
原文链接:https://www.cnblogs.com/java-my-life/archive/2012/06/20/2554024.html 在阎宏博士的<JAVA与模式>一书中开头 ...
- 洛谷P2071 座位安排
题目背景 公元二零一四年四月十七日,小明参加了省赛,在一路上,他遇到了许多问题,请你帮他解决. 题目描述 已知车上有N排座位,有N*2个人参加省赛,每排座位只能坐两人,且每个人都有自己想坐的排数,问最 ...
- beego 连接postgres
package main import ( "fmt" "github.com/astaxie/beego/orm" "mybee/models&qu ...
- clojure with postgres
主要关注访问pg.不关心其他db 1 clojure.java.jdbc https://github.com/clojure/java.jdbc http://clojure-doc.org/art ...
- 关于django的模板层
你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python代码之中. def current_datetime(request): now = datet ...
- linux中swap的构建
一.使用物理分区构建swap 1.分区 [root@server3 ~]# fdisk /dev/vdb Welcome to fdisk (util-linux 2.23.2). Changes w ...
- LocalDate test
import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.tim ...