CryptoJS 加密的使用方法
因为公司的项目中用到了接口加密解密,所以百度了一下前端JS加密相关的文章,发现谷歌的CryptoJS挺好用的,因为项目用的是vue框架,记录一下项目中使用经验:
首先使用npm安装CryptoJS
npm install crypto-js
引用
import CryptoJS from 'crypto-js/crypto-js'
在此我引用的是总文件,如果只是用到个别的加密方式,可以单独引用对应的加密JS文件;
加密代码实现
项目中需要将所有传到后台的参数分5个步骤处理:
第一步:排序
第二步:将排序好的参数进行MD5加密作为接口的签名
第三步:将排序好的参数和接口签名拼接上进行AES加密
第四部:将AES加密后的密文Base64加密
第五步:将最终的密文encodeURIComponent;
代码如下:
function encryption(data) {let strs=[];for(let i in data){strs.push(i+'='+data[i]);}strs.sort(); // 数组排序strs=strs.join('&'); // 数组变字符串let endData=strs+'&sign='+CryptoJS.MD5(strs+'ADfj3kcadc2349akvm1CPFFCD84f').toString(); // MD5加密let key = CryptoJS.enc.Utf8.parse("0880076B18D7EE81"); // 加密秘钥let iv = CryptoJS.enc.Utf8.parse("CB3EC842D7C69578"); // 矢量let encryptResult = CryptoJS.AES.encrypt(endData,key, { // AES加密iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7 // 后台用的是pad.Pkcs5,前台对应为Pkcs7});return encodeURIComponent(CryptoJS.enc.Base64.stringify(encryptResult.ciphertext)); // Base64加密再 encode;
}
加密最终的密文拼接在接口地址后面,请求接口。后台返回的数据也是密文;解密方法如下:
function decryption(data) {let key = CryptoJS.enc.Utf8.parse("0880076B18D7EE81"); // 加密秘钥let iv = CryptoJS.enc.Utf8.parse("CB3EC842D7C69578"); // 矢量let baseResult=CryptoJS.enc.Base64.parse(data); // Base64解密let ciphertext=CryptoJS.enc.Base64.stringify(baseResult); // Base64解密let decryptResult = CryptoJS.AES.decrypt(ciphertext,key, { // AES解密iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});let resData=decryptResult.toString(CryptoJS.enc.Utf8).toString();return JSON.parse(resData);}
备注:因为后台返回的数据是json格式;所以做种return的时候使用JSON.parse();如果解密的目标为字符串,比如说需要解密的是一个加密的token值。那就要做相应的改动:
function decryption(data) {let key = CryptoJS.enc.Utf8.parse("0880076B18D7EE81"); // 加密秘钥let iv = CryptoJS.enc.Utf8.parse("CB3EC842D7C69578"); // 矢量let baseResult=CryptoJS.enc.Base64.parse(data); // Base64解密let ciphertext=CryptoJS.enc.Base64.stringify(baseResult); // Base64解密let decryptResult = CryptoJS.AES.decrypt(ciphertext,key, { // AES解密iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});return CryptoJS.enc.Utf8.stringify(decryptResult)}
因为项目比较赶,这个加密解密的过程虽然捣鼓出来了,但是还有很多东西不求甚解,以后会细致研究该加密方式的使用方法,再做补充。
CryptoJS 加密的使用方法相关推荐
- mpvue小程序实现人脸识别/视频录制/身份验证/CryptoJS加密 等功能
mpvue小程序实现人脸识别/视频录制/身份验证/CryptoJS加密 等功能 先看效果图 mpvue小程序与数据宝对接实现人脸识别/视频录制/身份验证/CryptoJS 加密 等功能关键代码 ind ...
- 常见的js加密/js解密方法
常见的js加密/js解密方法 当今互联网世界中,数据安全是至关重要的.为了保护用户的隐私和保密信息,开发人员必须采取适当的安全措施.在前端开发中,加密和解密技术是一种常见的数据安全措施,其中 Java ...
- java加密和js的CryptoJS加密
背景:java的解密加密和js的对应这里做个记录,这里加密hello字符串为示例 CryptoJS.enc.Base64.stringify对应的加密示例 js加密 sign = 'hello'; v ...
- 功能:crypto-js加密解密
一.需求背景及crypto实现原理 待补充 二.安装使用 2.1.安装 yarn add crypto-js 2.2.在utils.js引入插件 const CryptoJS = require('c ...
- CryptoJS加密解密
1.CryptoJS CryptoJS库是前端js写的一个加密解密的工具,使用场景就是对于像账户密码等重要信息要显示在页面上时,需要加密,这样才能保证安全,CryptoJS提供了许多加密的方法, 请参 ...
- getcoo php_PHP简单实现DES加密解密的方法
本文实例讲述了PHP简单实现DES加密解密的方法.分享给大家供大家参考,具体如下: des加密: function des_encrypt($str, $key) { $block = mcrypt_ ...
- phpc.sinaapp.com 加密的解密方法
原文:phpc.sinaapp.com 加密的解密方法 很简单,用类似phpjm的解密方式,替换掉_inc.php中最后一个return中的eval为print就出来了.
- python js加密解密_AES用cryptojs加密,用python解密加密Ciph
使用js CryptoJS加密和使用python解密时遇到问题密码密码在 这是我在js中的实现, 用加密消息附加iv并用base64编码 var message='Secreat Message to ...
- 可以考的python方面的证书-python有证书的加密解密实现方法
本文实例讲述了python有证书的加密解密实现方法.分享给大家供大家参考.具体实现方法如下: 最近在做python的加解密工作,同时加完密的串能在php上能解出来,网上也找了一些靠谱的资料,刚好也有时 ...
最新文章
- mysql常见增量恢复方式_MySQL 全备份与增量备份 全恢复与增量恢复
- UA MATH563 概率论的数学基础 中心极限定理8 弱大数定律 Bernstein多项式逼近
- ELK日志管理之——logstash部署
- Laravel核心代码学习--用户认证系统(基础介绍)
- alexa语音实现_如何通过语音删除Alexa录音
- 用.NET解索尼相机ARW格式照片
- python emoji 表情过滤
- python——进程基础
- 数据库左连接和右连接有什么区别!
- 腾讯内部出品Android编程入门教程,快快收藏吧!!!
- 前端页面预览word_页面预览Word
- mysqldump关于--set-gtid-purged=OFF的使用
- sklearn2onnx
- 模型推荐丨新闻传播大数据项目案例模型分享
- A Strong Baseline and Batch Normalization Neck for Deep Person Re-identification(论文笔记)(2019CVPR)
- 华为ENSP之防火墙双机热备
- docker监控方案
- 教学|3D建模之,游戏场景创建大致流程
- 浅析decltype一些有趣(实用)的用法
- python邮箱爆破_python制作企业邮箱的爆破脚本