crypto-js aes 加解密
首先安装cryptojs
npm install crypto-jsimport CryptoJS from 'crypto-js' // 引入CryptoJSconst key = CryptoJS.enc.Utf8.parse('47FC4124CF94E070') // 密钥const iv = CryptoJS.enc.Utf8.parse('ovOh2xYoRdfATob6') // 密钥偏移量// 加密方法
const AesEncode = function (word) {let srcs = CryptoJS.enc.Utf8.parse(word);// 对称加密算法主要有AES、DES、3DES / 非对称加密算法主要有RSA、DSA、RCC// iv(初始变量)// key(加密密钥)// mode(加密模式 主要有CBC(默认)、CFB、CTR、OFB、ECB)// padding(填充方式 主要有Pkcs7(默认)、Iso97971、AnsiX923、Iso10126、ZeroPadding)let encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });let encryptedBase64Data = CryptoJS.enc.Base64.stringify(encrypted.ciphertext);return encodeURIComponent(encryptedBase64Data);
}// 解密方法
const AesDecode = function (word) {word = decodeURIComponent(word)let encryptedHexStr = CryptoJS.enc.Base64.parse(word);let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);let decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);return decryptedStr.toString();
}加密示例如下:
// 对hello进行加密
let str = AesEncode('hello')
console.log(str) // k1sj3bcoa%2BOWfzgEZyqYeA%3D%3D// 对hello进行解密
let str1 = AesDecode('k1sj3bcoa%2BOWfzgEZyqYeA%3D%3D')
console.log(str1) // hello
cryptojs 采用的是对称加密,下面再来聊聊对称加密和非对称加密的差异:
对称加密
优点:算法公开、计算量小、加解密的效率高、加密速度快(加密和解密使用相同的密钥)
缺点:密钥的管理和分发上比较困难,不是非常安全,密钥管理负担很重
非对称加密
优点:安全性更高,公钥是公开的,密钥是自己保存的,不需要将私钥给别人
缺点:加密和解密花费时间长、速度慢,只适合对少量数据进行加密
解决办法
将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行
解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。
crypto-js aes 加解密相关推荐
- aes js 加盐值 解密_cryptoJS AES 加解密简单使用
简单记录一下,前端利用 cryptoJS 如何加解密的.主要是关于 AES 加解密. 需求描述:需要对 url 中的参数进行 AES 解密,然后再把该参数进行 MD5 加密通过接口传递. AES AE ...
- JS逆向加解密——python 实现AES加解密
前言 写爬虫项目,做JS逆向或者APP逆向时,经常遇到网站的很多参数都经过AES加密解密,用python实现AES加解密是非常简单的,免去了扣JS代码,并且实现格式固定,所以本文提供实现好的AES加解 ...
- [crypto]-01-对称加解密AES原理概念详解
1.对称加解密 术语:P是明文,C是密文,K是密钥,E是加密算法,D是解密算 (1).常用的对称加解密有哪些? (2).加解密的模式 [ecb]这种模式是将整个明文分成若干段相同的小段,然后对每一小段 ...
- Java code lib aes 加解密
Java aes 加解密 /*** Created by LvJianwei on 2018/2/8.*/import javax.crypto.Cipher; import javax.crypto ...
- [crypto]-02-非对称加解密RSA原理概念详解
说明:本文使用的数据来自网络,重复的太多了,也不知道哪篇是原创. 算法原理介绍 step 说明 描述 备注 1 找出质数 P .Q - 2 计算公共模数 N = P * Q - 3 欧拉函数 φ(N) ...
- 数据採集器服务——Socket(今天才发现AES加解密代码跟贴的时候不一样,貌似乱码,不知什么情况)...
近期刚做的一个项目.关于 Socket TCP 通信. 需求方提供了一个 ARM 机器,及数据採集器,须要我做一个服务端与数据採集器进行交互. 目的: 数据採集器:定时将读取到的数据发送到服务端. 服 ...
- 前端 crypto-js aes 加解密
背景 前段时间公司做项目,该项目涉及到的敏感数据比较多,经过的一波讨论之后,决定前后端进行接口加密处理,采用的是 AES + BASE64 算法加密~ 网上关于 AES 对称加密的算法介绍看上一篇! ...
- openssl c++实现bouncycastle中AES加解密
0x01 为什么要用bouncycastle 先说说JCE(Java Cryptography Extension)是一组包,它们提供用于加密.密钥生成和协商以及 Message Authentica ...
- Golang AES 加解密
文章目录 AES 简介 AES 加解密实现 小结 参考文献 AES 简介 利用 Go 提供的 AES 加解密与 Base64 编解码包,我们可以轻松实现 AES 加解密.实现之前,首先了解一下 AES ...
- java aes 工具类_Java中的AES加解密工具类:AESUtils
本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...
最新文章
- signature=0a26d8967069103efeee67346aac0529,Construction of Thinned Gated Single-Assignment Form
- html判断数字数据的大小写,判断一个字符是否是数字、还是大小写字母
- Oracle备份恢复一(手动备份)
- arm服务器芯片尺寸,华为第四代ARM服务器自研芯片Hi1620规格曝光 全球首款7nm工艺的数据中心用ARM处理器...
- 苹果笔记本电脑电池保养细则
- Teradata QueryGrid整合最佳分析技术 拓展客户选择空间
- Anaconda 国内镜像源整理
- iphone 如何成功的把three20成功的添加到xcode中去。
- android手机视频,安卓手机视频加密软件
- Mybatis3全面详解
- JS五彩连珠小游戏(Canvas绘制)
- 怎么学计算机中级,计算机二级自学要多久 怎样复习
- w10系统服务器管理器,Win10如何打开服务管理器
- 如何将手机里的PDF转换成Word?
- Error Client wants topic A to have B, but our version has C. Dropping connection.
- 如何快速、有效地管理海量的、分散的数据?佳农靠它实现数智化
- Oracle update 更新数据语法和写法
- SurfaceView显示透明色
- std::wstring std::wstring::sizetype wstring::npos 简单示例介绍
- 华为p20nfc怎么复制门禁卡_EMUI的这个功能,让手机瞬间化身门禁卡