2020-1-8 爬网页19-js逆向入门(DES/3DES加密-对称加密,ECB分组)

本文只适用于初学者,只需要会打断点追踪就可以了。

前端js代码除了Base64编码和解码MD5加密AES加密RSA加密之外,偶尔还会看见DES/3DES加密。

简介

DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。

DES是一种对称加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码。

DES是以64比特的明文为一个单位来进行加密的,超过64比特的数据,要求按固定的64比特的大小分组,关于分组模式参见链接

DES使用的密钥长度为64比特,但由于每隔7个比特设置一个奇偶校验位,因此其密钥长度实际为56比特,另外8位是奇偶校验位。奇偶校验为最简单的错误检测码,即根据一组二进制代码中1的个数是奇数或偶数来检测错误。

其加密/解密过程如下:
在这里插入图片描述

DES加密的缺陷明显,即56位的密钥安全性不足,已被证实可以在短时间内破解。为解决此问题,出现了3DES,也称Triple DES。

3DES为DES向AES过渡的加密算法,它使用3条56位的密钥对数据进行三次加密。为了兼容普通的DES,3DES并没有直接使用 加密->加密->加密 的方式,而是采用了加密->解密->加密 的方式。

其加密过程如下:
在这里插入图片描述
当三重密钥均相同时,前两步相互抵消,相当于仅实现了一次加密,因此可实现对普通DES加密算法的兼容。

相比DES,3DES因密钥长度变长,安全性有所提高,但其处理速度不高。因此又出现了AES加密算法,AES较于3DES速度更快、安全性更高。

js使用DES加密

DES加密的弱点已经说过了,所以实际中使用的很少。
在这里插入图片描述
看form data,界面上输入的密码是“123456”,但是实际显示的内容很明显是加密过的。

进入source,搜索"password"
在这里插入图片描述

在这里,6969行,encryptByDES。
继续搜索“encryptByDES”
在这里插入图片描述
在这里了,熟悉吗?是的,很AES加密太像了。

把代码复制出来,nodejs执行一下

const CryptoJS = require('crypto-js');  //引用AES源码js

function encryptByDES(t, e) {
            var a = CryptoJS.enc.Utf8.parse(e);
            try {
                var s = CryptoJS.DES.encrypt(String(t), a, {
                    mode: CryptoJS.mode.ECB,
                    padding: CryptoJS.pad.Pkcs7
                })
            } catch (t) {
                console.log(t)
            }
            return s.toString()
        }

DESkey= "e9284d45-cf2a-4e46-9367-f122413ca6b0"
aaaa="123456"
console.log(encryptByDES(aaaa,DESkey))

运行结果,是一致的。

88Fypeu1fTg=

补充内容

1.分组模式
这个网站的分组模式用的是ECB,也就是电码本模式 Electronic Codebook Book。
这种模式是将整个明文分成若干段相同的小段,然后对每一小段进行加密。
在这里插入图片描述

这种模式的优点

  • 简单
  • 有利于并行计算
  • 误差不会被传送

这种模式的缺点

  • 不能隐藏明文的模式
  • 可能对明文进行主动攻击

2.3DES加密
如果是3DES加密方式,那使用以下代码

CryptoJS.TripleDES.encrypt

3.2个文件
网上的很多例子使用的以下2个文件

<script src="tripledes.js"></script>
<script src="mode-ecb-min.js"></script>

这2个文件

  • tripledes.js 为DES主文件,自带 CBC模块
  • mode-ecb.js 为 DES的ECB模块

使用CBC模式引入 tripledes.js,二使用 ECB模式需要引入 tripledes.js和mode-ecb.js。
上面的网站就是使用这2个文件。
在这里插入图片描述
我在nodejs中引入的是整个crypto模块。
其实在安装目录中node_modules\crypto-js,也能找到这2个文件。

发布了122 篇原创文章 · 获赞 7 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42555985/article/details/103891453
今日推荐