Javascript实现AES算法
JavaScript的加密和解密用的是google的CryptoJS
库。
需要下载CryptoJS库,下载地址如下:https://github.com/sytelus/CryptoJS
AES算法
AES算法详解:高级加密标准,它是一种对称加密算法,AES只有一个密钥,这个密钥既用来加密,也用于解密。
AES加密方式有五种:ECB, CBC, CTR, CFB, OFB
。
AES填充模式常用的有三种,分别是:NoPadding
, ZeroPadding
,PKCS7
,默认为PKCS7
。
从安全性角度推荐CBC
加密方法,本文介绍了CBC
,ECB
两种加密方法的Javascrip
实现。
CBC 和ECB模式的区别就是:
- CBC加密需要一个
十六位的key
(密钥)和一个十六位iv
(偏移量) - ECB加密不需要
iv
,只需要key
(密钥)
JS逆向时,AES加密的搜索关键词有AES
,mode
, padding
等。
AES-ECB模式
加密js代码:
var CryptoJS = require("crypto-js");var plaintext = '今天特大新闻是富士康有确诊病例!时间:2022-10-31' //加密前明文
var aes_key = "zhgerXHBVaaKm8xy"; // AES加密的keyvar encryp_data = CryptoJS.AES.encrypt(plaintext, CryptoJS.enc.Utf8.parse(aes_key), {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7
}).toString()
console.log("加密后数据:", encryp_data)
解密js代码:
console.log("--------------------打印一个美丽的分割线--------------------")
var CryptoJS = require("crypto-js");var aes_key = "zhgerXHBVaaKm8xy"; // AES加密的key
var data_text = "r/eiTPl52bif4KsJfR9oQ2ZNUdU/XHm2ZBBPI8nzmxOueNbEVCdmPzo0uWkI4U29"var decrypt_text = CryptoJS.AES.decrypt(data_text, CryptoJS.enc.Utf8.parse(aes_key), {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Utf8)console.log("解密后数据:", decrypt_text)
运行结果:
AES-CBC模式
加密js代码:
var CryptoJS = require("crypto-js");var plaintext = "好吧!被你看见这篇文章了,这就是加密前数据。"; //加密前明文
var aes_key= "1234567890abcdef"; //加密key
var aes_iv = "abcdef1234567890"; //加密秘钥// 加密-将秘钥和iv转换成Utf8字节数组
var encrypt_text = CryptoJS.AES.encrypt(plaintext, CryptoJS.enc.Utf8.parse(aes_key),{iv: CryptoJS.enc.Utf8.parse(aes_iv),mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7
}).toString();
console.log("AES加密后的数据:", encrypt_text)
解密js代码:
var CryptoJS = require("crypto-js");var aes_key= "1234567890abcdef"; //加密key
var aes_iv = "abcdef1234567890"; //加密秘钥var encrypt_text = "sqqa8ZkAXCbXSFqyVCZKjxMVjWMgNZc/Vjs9ofFTDNmZd9cI1AG3JyiGsYoT66UkaCHJefqvXT0LRF/txqKSAQc8lMp88Ai5VAbuVUu5nA8="var decrypt_text = CryptoJS.AES.decrypt(encrypt_text, CryptoJS.enc.Utf8.parse(aes_key), {iv: CryptoJS.enc.Utf8.parse(aes_iv),mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Utf8);
console.log("AES解密后的数据:", decrypt_text)
运行结果:
AES加密后的数据: sqqa8ZkAXCbXSFqyVCZKjxMVjWMgNZc/Vjs9ofFTDNmZd9cI1AG3JyiGsYoT66UkaCHJefqvXT0LRF/txqKSAQc8lMp88Ai5VAbuVUu5nA8=
AES解密后的数据: 好吧!被你看见这篇文章了,这就是加密前数据。
常用的加密算法总结:
对称加密(加密解密密钥相同):
DES
、DES3
、AES
非对称加密(分公钥私钥):
RSA
信息摘要算法/签名算法:
MD5
、HMAC
、SHA
前端实际使用中
MD5
、AES
、RSA
,自定义加密函数使用频率是最高的几种加密方式配合次序:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,用签名算法生成非对称加密的摘要
DES、DES3、AES、RSA、MD5、SHA、HMAC
传入的消息或者密钥都是bytes数据类型,不是bytes数据类型的需要先转换;密钥一般是8的倍数Python实现
RSA
中,在rsa库中带有生成签名和校对签名的方法安全性:
DES<DES3=AES<RSA
,至于MD5、SHA、HMAC不好说了
Javascript实现AES算法相关推荐
- JavaScript实现AES算法加密和解密
JavaScript的加密和解密用的是google的CryptoJS库.本文以AES/ECB/NoPadding为例展示AES加密和解密的方法. 需要下载CryptoJS库,下载地址如下: https ...
- 前后台加解密的使用--SHA256算法 RSA算法 AES算法
SHA256算法 sha256与md5一样是散列算法,不是加密算法,不存在解密的问题,因此是不可逆的,可以通过key+password,对密码进行加密,在后台进行比对,安全性比md5高一点,加密后生成 ...
- 学习JavaScript数据结构与算法(一):栈与队列
本系列的第一篇文章: 学习JavaScript数据结构与算法(一),栈与队列 第二篇文章:学习JavaScript数据结构与算法(二):链表 第三篇文章:学习JavaScript数据结构与算法(三): ...
- 关于AES算法及JAVA中的实现
为什么80%的码农都做不了架构师?>>> 什么是AES 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法, ...
- Delphi与JAVA互加解密AES算法
搞了半天终于把这个对应的参数搞上了,话不多说,先干上代码: package com.bss.util;import java.io.UnsupportedEncodingException; impo ...
- javascript数据结构与算法---检索算法(二分查找法、计算重复次数)
javascript数据结构与算法---检索算法(二分查找法.计算重复次数) /*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/ function qSort(arr){if (a ...
- AES算法相关数学知识 - 素域学习
在AES算法中的MixColumn层中会用到伽罗瓦域中的乘法运算,而伽罗瓦域的运算涉及一些数学知识如下: 素域 有限域有时也称伽罗瓦域,它指的是由有限个元素组成的集合,在这个集合内可以执行加.减.乘和 ...
- JavaScript数组去重算法实例
本文主要介绍了JavaScript数组去重算法,结合实例形式总结分析了JavaScript数组去重相关的读写.遍历.比较.排序等操作及算法改进相关实现技巧,需要的朋友可以参考下 测试用例: arr = ...
- 为什么我要放弃javaScript数据结构与算法(第二章)—— 数组
第二章 数组 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构.JavaScript里也有数组类型,虽然它的第一个版本并没有支持数组.本章将深入学习数组数据结构和它的能力. 为什么 ...
最新文章
- conda-forge,conda,-c的理解
- 嵌入式linux完整top命令,linux的top命令详解
- [Java]关于throw,throws,try{}catch(){}
- php escapeshellcmd,利用/绕过 PHP escapeshellarg/escapeshellcmd函数
- Silverlight 5 Beta新特性[5]隐式模板支持
- HR怼程序员频繁跳槽,程序员竟这么回怼
- pbxproj文件冲突解决办法
- We7从这里开始---认识we7
- Atitit 圣爱提拉克斯在会议上 2019年10月中旬的一天,有过这样的事。 这天,地方上风大。出乎人们意料之外,到东海岸一个地方访问的亲爱的领导者圣爱提拉克斯要同人们一道开会。主持人着了慌,
- 怎么在博客上积累代码量?
- mysql跨库查询语句mybatis_mybatis实现跨库多表查询
- 路由2台,二层交换机4台,三层1台,实现网络互联
- 第二章 年轻人都是富翁
- 计算机30首音乐怎么开,qq每日精选_qq音乐每日精选30首在哪找
- C/C++语言100题练习计划 97——素数对
- JS--实现漂浮广告
- UVM交互式调试库:缩短调试周转时间
- “部分-整体“——组合模式
- Xray+Rad+FOFA
- 问题 A: 【字符串】最长回文子串