AES加解密-从JS逆向开始

一、AES加密算法

原理请自行百度,对于非魔改的AES,我们只需要得到密钥即可进行加解密,因为这是对称加密。本文讨论范围仅限于前端范畴(笔者认知有限)。

二、JS逆向

众所周知,浏览器里面没有秘密;私以为,debugger的上限即是能力的上限,下面笔者就拿自己做过的几个网站举例(重要信息已打马赛克)。

1、在下面这个登录页中,我们输入完账号和密码 , 下图一

2、发现密码被加密传输了,于是我们想知道是什么加密手段以及如何解密!

3、于是就找登录接口或加密所在位置,这里请求方式是Url类请求。 Url类和Body类请求

4、自然我们发现 ? 后面的参数是关键,然后搜索 appCode

5、找到几个JS文件,我们依次打开,然后搜索 encrypt(encrypt加密,decrypt解密,一般来说大部分网站都是采用AES加密)。 下图二

6、我们看到 a.password 在这边进行了加密处理,打个断点看一下。 下图三

7、在搜索这个 key ,我们成功找到了密钥 ! 下图四

图一

图二

图三

图四

8、接下来我们确定这个AES是标准的AES加密,点源码进去看一下。 下图一

9、然后把这几行代码复制到我们的项目中,注意安装依赖替换。 下图二

10、然后打印一下 a 看一下,成功打印加密后的值。 下图三

图一

图二

图三
11、通过百度得知解密是 AES.decrypt,我们写一个通用方法。 下图四、下图五
图四

图五

好的,到现在为止,我们完成了AES加解密的操作,最下面有番外喔!!!


举一反三,我们再拿一个网站开刀

在这里插入图片描述

在这里插入图片描述

是不是很 Easy~~!!

三、总结

对普通网站而言,信息安全没有那么重要;但是对于个别网站,虽然对数据进行了加密,但也是只能防防君子。那么我们获取数据必然要发送请求,开发者可以通过封IP等其他手段进行打击。此外,比较安全的加密方式是非对称加密,这里献上大佬的文章->前后端 JS 加密常用方法(非对称加密、对称加密)

四、番外

上文说道,我们成功在家庭服务器上面部署了npm私服(verdaccio)。

于是,我们想把这个AES加解密通用方法做成npm包发布上去。

1、 初始化项目

npm init

2、 安装依赖,导出函数(代码再最下方

在这里插入图片描述

3、 编写 README.md 文件(网上有很多漂亮的模板可以参考)

在这里插入图片描述
4、添加、切换源

在这里插入图片描述
4、推送包(登录?)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5、在项目中使用

npm install yaes

在这里插入图片描述

6、代码块

import pkg from 'crypto-js';
const { enc, AES, mode: _mode, pad } = pkg;

const aes = (type, pwd, key) => {
    //pwd明文|密码 key秘钥
    const keys = enc.Utf8.parse(key);
    const pwds = enc.Utf8.parse(pwd);
    if (type === "加密") {
        const encryptedData = AES.encrypt(pwds, keys, {
            mode: _mode.ECB,
            padding: pad.Pkcs7,
        }).ciphertext.toString();
        return encryptedData;
    } else {
        const encryptedHexStr = enc.Hex.parse(pwd);
        const encryptedBase64Str = enc.Base64.stringify(encryptedHexStr);
        const decryptedData = AES.decrypt(encryptedBase64Str, keys, {
            mode: _mode.ECB,
            padding: pad.Pkcs7,
        }).toString(enc.Utf8);
        return decryptedData;
    }
}
export default aes;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值