在前端常见的加密方式中AES很少使用,因为相对于非对称的RSA安全性很低,AES是典型的对称加密,密钥就在前端源码里。
案列网站是http://ewt360.com,一个并不复杂的网站,首先抓个包看看:

加密字段只有password,粗略一看挺像MD5的加密方式,但是看看源码,有明确的key

复制加密函数在调试工具中试试:

其中引用函数只有几十行代码:
var com_str = {
_KEY: "20171109124536982017110912453698",//32位
_IV: "2017110912453698",//16位
/**************************************************************
*字符串加密
* str:需要加密的字符串****************************************************************/
Encrypt: function (str) {
var key = CryptoJS.enc.Utf8.parse(this._KEY);
var iv = CryptoJS.enc.Utf8.parse(this._IV);
var encrypted = '';
var srcs = CryptoJS.enc.Utf8.parse(str);
encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.ciphertext.toString();
},
/**************************************************************
*字符串解密
* str:需要解密的字符串****************************************************************/
Decrypt: function (str) {
var key = CryptoJS.enc.Utf8.parse(this._KEY);
var iv = CryptoJS.enc.Utf8.parse(this._IV);
var encryptedHexStr = CryptoJS.enc.Hex.parse(str);
var srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
var decrypt = CryptoJS.AES.decrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString();
}
}
其中CryptoJS是加密的核心类,在另一个js文件中,需要来将两个js合并,CryptoJS如下:
/*
CryptoJS v3.1.2http://code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.http://code.google.com/p/crypto-js/wiki/License
*/
var CryptoJS = CryptoJS || function(u, p) {
var d = {}
, l = d.lib = {}
, s = function() {}
, t = l.Base = {
extend: function(a) {
s.prototype = this;
var c = new s;
a && c.mixIn(a);
c.hasOwnProperty("init") || (c.init = function() {
c.$super.init.apply(this, arguments)
}
);
c.init.prototype = c;
c.$super = this;
return c
},
create: function() {
var a = this.extend();
a.init.apply(a, arguments);
return a
},
init: function() {},
mixIn: function(a) {
for (var c in a)
a.hasOwnProperty(c) && (this[c] = a[c]);
a.hasOwnProperty("toString") && (this.toString = a.toString)
},
clone: function() {
return this.init.prototype.extend(this)
}
}
, r = l.WordArray = t.extend({
init: function(a, c) {
a = this.words = a || [];
this.sigBytes = c != p ? c : 4 * a.length
},
toString: function(a) {
return (a || v).stringify(this)
},
concat: function(a) {
var c = this.words
, e = a.words
, j = this.sigBytes;
a = a.sigBytes;
this.clamp();
if (j % 4)
for (var k = 0; k < a; k++)
c[j + k >>> 2] |= (e[k >>> 2] >>> 24 - 8 * (k % 4) & 255) << 24 - 8 * ((j + k) % 4);
else if (65535 < e.length)
for (k = 0; k < a; k += 4)
c[j + k >>> 2] = e[k >>> 2];
else
c.push.apply(c, e);
this.sigBytes += a;
return this
},
clamp: function() {
var a = this.words
, c = this.sigBytes;
a[c >>> 2] &= 4294967295 << 32 - 8 * (c % 4);
a.length = u.ceil(c / 4)
},
clone: function() {
var a = t.clone.call(this);
a.words = this.words.slice(0);
return a
},
random: function(a) {
for (var c = [], e = 0; e < a; e += 4)
c.push(4294967296 * u.random() | 0);
return new r.init(c,a)
}
})
, w = d.enc = {}
, v = w.Hex = {
stringify: function(a) {
var c = a.words;
a = a.sigBytes;
for (var e = [], j = 0; j < a; j++) {
·········
上面便是一个AES加密的实例,至于python如何实现,已经在python加密全家桶里面《Python实现DES、DES3、AES、RSA、MD5、SHA、HMAC加密方式及示例》,感兴趣可以看看。

0宽字符加密_前端AES加密方式分析,及其python实现相关推荐

  1. BASE64加密解密---前端 AES 加密解密

    在做项目的时候,要求base64加密传输,和java后端试了很多,就这个比较合适 首先先下包 npm i crypto-js --save 封装 import CryptoJS from " ...

  2. 0宽字符加密_艺术鬼才!Unicode 字符还能这么玩?

    上周的时候,朋友圈的直升飞机不知道为什么就火了,很多朋友开着各种花式飞机带着起飞. 还没来得及了解咋回事来着,这个直升飞机就 到的微博热搜. 后面越来越多人开来他们的直升飞机,盘旋在朋友圈上方.于是很 ...

  3. 0宽字符加密_一文看懂异或加密,有动画演示呦

    应用程序保护是指单词和应用程序 什么是异或加密 在逻辑运算中,除了 与 或 非 这 3 种运算之外,还有一种运算运算叫做 异或(xor),符号记为 ^,异或运算简单来说就是 相同为 0,不同为 1, ...

  4. 前端aes加密_前端安全攻防解析

    知识点列表: CSRF 攻击 XSS攻击 HTTPS 程序员必须要了解的web安全 - 掘金 若愚:「每日一题」CSRF 是什么? [基本功] 前端安全系列之一:如何防止XSS攻击? [基本功] 前端 ...

  5. java php aes加密解密_php aes 加密解密可与java对接

    php aes 加密解密可与java对接 博主:liu1693 发表时间:2017-02-23 16:52:27 浏览量:100 class Encrypt{ //加密方法 public static ...

  6. java python rsa加密_实现Java加密,Python解密的RSA非对称加密算法功能

    摘要 因为最近业务需要使用到openssl的rsa非对称加密算法,研究了下它的使用方式,但是特殊在于前端分IOS和android两端,所以前端部门要求使用java给他们做一个加密工具包,但是因为服务端 ...

  7. php aes加密中文,PHP AES加密 - 菜鸟要飞啊的IT小窝 - OSCHINA - 中文开源技术交流社区...

    1.aes加密类 namespace app\common; //也可以直接用define定义常量 //define('KEY','12345'); //define('IV','12345'); / ...

  8. DES加密解密与AES加密解密

    × 目录 [1]AES加密算法和DES加密算法的效率比较 [2]AES和DES加密解密代码 随着开发时间的变长,当初认为比较难的东西,现在渐渐也就变的不那么难了!特别对于一些经常很少使用的类,时间长了 ...

  9. php内置aes加密,PHP进行AES加密

    一.AES简介 高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的).对称加密算法也就是加密和解密用相同的密 ...

最新文章

  1. fon循环总是返回最后值问题
  2. python数据清理的实践总结_python 数据的清理行为实例详解
  3. 青少年软件编程等级考试 python-中国电子学会《全国青少年软件编程等级考试标准》升级啦!...
  4. 西安电子科技大学第16届程序设计竞赛 F题
  5. 如何使用代码的方式删除 SAP CRM 订单 Text 数据
  6. 荷兰人发明的新客机是劈叉的!乘客坐在机翼上
  7. 卸载wrapt_[python] 安装TensorFlow问题 解决Cannot uninstall 'wrapt'. It is a distutils installed project...
  8. 前端学习(2752):global全局设置
  9. Eclipse添加SVN插件:导入项目+上传项目+更新项目
  10. 机器学习基础算法26-聚类理论
  11. [记]创建常量、原子性的值类型
  12. 工程实践线切割3B代码参考
  13. js输入身份证号直接转换时间
  14. 基于pytorch的GAN网络搭建
  15. AutoRunner 功能自动化测试项目实训之AutoRunner产品设计目标(三)
  16. java爆炸图片切换,jQuery实现图片爆炸效果
  17. 谈谈百度直达号的服务价值
  18. pd.read_csv处理含中文的文件
  19. gif一键抠图 在线_手机一键抠图去背景||电脑抽奖软件
  20. Chapter 3: Strings、Vectors And Arrays

热门文章

  1. 面试:说说参数验证 @Validated 和 @Valid 的区别?
  2. android EditText显示不全
  3. VS2010-2015对C++11/14/17特性的支持
  4. torch 多进程队列 问题
  5. Pytorch yolov3 多GPU 训练
  6. CNN网络优化加速汇总
  7. pyqt播放视频不能显示 解决
  8. 基于opencv的BackgroundSubtractorMOG2目标追踪
  9. Python3.6 安装 statsmodels
  10. 使用FreeImage帮助OpenCV读出更多图像(转)