AES加密
定义:AES加密又称对称加密,通过密钥将信息加密后,把密文传给另一方,另一方通过这个相同密钥将密文解密,转换成可以理解的明文。
AES加密三要素
- 填充
AES分组加密的特性,AES机密是把铭文拆分成一个个独立的铭文快,并且明文快128bit的(假如一个明文196bit,按照每个组128bit拆分,第一个只有64bit,不足128bit这时候就得用填充 )
填充方法有:
Nopadding
PKCS7Padding
Zeropadding:0填充
AnsiX923
lso10126
lso97971 - 模式
每个模式的具体就不再这里阐述了。 - 密钥
以上就是AES的三要素了。找到这三个东西就可以正常解密。 - AES加密流程
把明文按照128bit拆分成若干个明文块
按照选择的填充方式来填充最后一个明文块
每个明文块利用AES加密器和密钥,加密成密文块
拼接所有的密文块,成为最终的密文结果。
先看看JavaScript怎样写AES加密的
var CryptoJS = require('crypto-js')
function get_aes_decrypt(pwd,key){
var pwd = JSON.stringify(pwd);
var _key = CryptoJS .enc.utf8.parse(key);
var encryptedData = CryptoJS.AES.encrypt(pwd,_key,data:{
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return encryptedData.ciphertext.toString();
}
var data = get_aes_decrypt()
console.log(data)
下面通过案例来解释
案例一:
全国建筑市场监管平台:http://jzsc.mohurd.gov.cn/data/company
此站点通过Cryptojs_AES_CBC加密,响应加密返回的hexstr
AES加密可以通过关键字:decrypt、CryptoJS、encrypt等进行全局查找。
这个案例是对是数据进行加密的
- 进入js文件
进入之后,先把代码扣除出来。你仔细的话可以发现这个函数跟我上述给的JavaScript代码十分相似。这里不难发现n就是所谓经过处理的明文,f就是所说的密钥,data函数的iv就是模值,mode就是采用的加密模式,padding就是填充方式。
将扣下的代码把三要素补上,接着采用缺啥补啥的方式将代码改写好就可以运行了。
训练网站:
https://www.maomaozu.com/#/build
如果喜欢的话可以关注博主,并且可以私聊博主进行技术交流