cryptoJS 安装与使用
在线文档
- https://github.com/brix/crypto-js/blob/master/docs/QuickStartGuide.wiki#AES
安装
npm install crypto-js
#安装之后看到node_modules目录直接放到public目录下
使用
#主要引入以下这个文件
crypto-js/crypto-js.js
示例
#js端
function secret(string, code, operation) {code = CryptoJS.MD5('contentDocuments').toString();code2 = CryptoJS.MD5('contentWindowHig').toString();var iv = CryptoJS.enc.Utf8.parse(code.substring(0, 16));var key = CryptoJS.enc.Utf8.parse(code2.substring(0,16));if (operation) {return CryptoJS.AES.decrypt(string, key, {iv: iv, padding: CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8);}return CryptoJS.AES.encrypt(string, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7}).toString();}
# php端
public static function secret($string,$code,$operation=false){$code = md5('contentDocuments');$code2 = md5('contentWindowHig');$iv = substr($code,0,16);$key = substr($code2,0,16);if($operation){return openssl_decrypt(base64_decode($string),"AES-128-CBC",$key,OPENSSL_RAW_DATA,$iv);}return base64_encode(openssl_encrypt($string,"AES-128-CBC",$key,OPENSSL_RAW_DATA,$iv));}
自己封装
class AesSecurity
{/*** method 为AES-128-CBC时* @var string传入要加密的明文* 传入一个16字节的key* 传入一个16字节的初始偏移向量IV*/private static $method = 'AES-128-CBC';private static $key = 'contentWindowHig';private static $options = OPENSSL_RAW_DATA;private static $iv = 'contentDocuments';public static function getKey(){return self::$key;}public function __construct(){self::$key = md5(self::$key,true);}public static function setMethod($method){self::$method = $method;}public static function setKey($key){self::$key = $key;}/*** @param $options 可取值 OPENSSL_ZERO_PADDING OPENSSL_RAW_DATA*/public static function setOptions($options){self::$options = $options;}public static function _encrypt($input){$key = substr(md5(self::$key),0,16);$iv = substr(md5(self::$iv),0,16);$data = base64_encode(openssl_encrypt($input,"AES-128-CBC",$key,OPENSSL_RAW_DATA,$iv));return $data;}/*** @param $input* @return bool|string* todo rtrim*/public static function _decrypt($input){$key = substr(md5(self::$key),0,16);$iv = substr(md5(self::$iv),0,16);$data = openssl_decrypt(base64_decode($input),"AES-128-CBC",$key,OPENSSL_RAW_DATA,$iv);return $data;}}#js端
<script type="text/javascript" >var key_base = 'contentWindowHig';var iv_base = 'contentDocuments'var key_hash = CryptoJS.MD5(key_base).toString();var iv_hash = CryptoJS.MD5(iv_base).toString();var key = CryptoJS.enc.Utf8.parse(key_hash.substr(0,16));var iv = CryptoJS.enc.Utf8.parse(iv_hash.substr(0,16));function _decrypt(string) {var data = CryptoJS.AES.decrypt(string, key, {iv: iv, padding: CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8);return data;}function _encrypt(string) {var data = CryptoJS.AES.encrypt(string, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7}).toString();return data;}var a = _encrypt('msgg');var b = _decrypt(a);var c= _decrypt('evD5EE8QGSWpuqzhDFaamw==')console.log(a);console.log(b);console.log(c);
</script>
cryptoJS 安装与使用相关推荐
- cryptojs aes加密每次结果不同_Javascript加密算法标准库,支持Nodejs+浏览器——crypto-js...
介绍 crypto-js是一个前端Javascript标准加密算法库,CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法.有时候项目涉及到的敏感数据比较多,为 ...
- 史上最全总结!爬虫常见加密解密算法
文章目录 简介 JavaScript 加密解密模块 Crypto-JS Node-RSA JSEncrypt Python 加密解密库 Cryptodome & Crypto Hashlib ...
- uni-app和php交互DES加密解密数据
1 uni-app操作 (1) 打开HBuilderX的视图->显示终端 cd 切换到你项目的根目录 执行命令 npm install crypto-js 安装成功后你的项目根目录会生成node ...
- uni-app项目实现用户注册密码前端页面加密
uni-app项目下引入crypto-js.js实现密码加密 一.HBuilder 安装 crypto-js.js 视图==>显示终端==> cd 进入项目根目录 例如:demo\test ...
- 【Python网络爬虫】爬虫常见加密解密算法
](https://img2020.cnblogs.com/blog/2501174/202108/2501174-20210816091906408-1932195692.png) 简介# 本文总结 ...
- 爬虫常见的加密解密算法
简介 本文总结了在爬虫中常见的各种加密算法.编码算法的原理.在 JavaScript 中和 Python 中的基本实现方法,遇到 JS 加密的时候可以快速还原加密过程,有的网站在加密的过程中可能还经过 ...
- vue AES加密(URLEncode加密)
目录 第一步:安装crypto-js 第二步:新建一个crypto.js文件 第三步:在需要的地方引入 第四步:AES加密+URLEncode加密 第五步:AES解密+URLEncode解密 第一步: ...
- 关于 localStorage 的一些高阶用法
很多人在用 localStorage 或 sessionStorage 的时候喜欢直接用,明文存储,直接将信息暴露在:浏览器中,虽然一般场景下都能应付得了且简单粗暴,但特殊需求情况下,比如设置定时功能 ...
- 【JS】1347- localStorage 的高阶用法
很多人在用 localStorage 或 sessionStorage 的时候喜欢直接用,明文存储,直接将信息暴露在:浏览器中,虽然一般场景下都能应付得了且简单粗暴,但特殊需求情况下,比如设置定时功能 ...
最新文章
- 华为如何打造智能终端的有趣灵魂?(下)
- 从零开始Code Review
- SpringCloud系列之服务消费Ribbon和Feign区别
- 敏捷开发模式下如何更好的进行测试
- erp系统原理和实施第五版pdf_【图片】生产制造企业ERP系统选型及实施“避坑”指南!【企业管理软件吧】...
- kali linux 搜狗输入法,kali_Linux下安装搜狗输入法
- 一致性Hash简单介绍和使用
- 《Python程序设计开发宝典》全面上架(新书超低价优惠+转发积攒送书)
- java 线程map_map集合分割以及多线程处理数据
- 开发宝典:基于分布式对象的网游程序结构设计
- 如何求递归算法的时间复杂度
- ElasticSearch学习(一):Linux环境准备
- Win11改Win10右键菜单
- 算法工程师大致是做什么的
- 八孔g调短洞箫_八孔g调洞箫曲谱_八孔G调箫G调简谱
- 四足机器人仿真 Matlab
- mt管理器主题修改教程_微信皮肤主题怎么弄 微信设置更换修改气泡和主题教程...
- java地图代码_如何在Java中生成地图?
- SQL Server关于AlwaysOn的理解
- 百度搜狗360快速排名可以解决网站排名的哪些问题呢?
热门文章
- 【并行计算】Bitonic Sort(双调排序)基础
- 51job前程无忧网站打不开,51job网站进不了,51job打不开
- WebServer【笔记2】
- 阿里腾讯字节,谁才是真正的福利大厂
- 表白神器——python,一“枪”一个准,限用一次!!(两次以上就无效了)
- 机器学习实战之路 —— 4 Boosting算法
- 集成学习-Bagging和Boosting算法
- applet java_Java Applet攻击以北约为目标,Java开发人员对点击诱饵感到愤怒
- 深度学习在超分辨率重建上的应用SRCNN,FSRCNN,VDSR,DRCN,SRGAN
- 美团小游戏守卫羊村玩法介绍和游戏漏洞