js逆向-MD5加密

MD5是一种被广泛使用的线性散列算法,可以产生一个128位(16字节)的散列值(hash value),用户确保信息传输完整的一致性。且MD5加密之后产生的是一个固定长度(32位或16位)的数据

  • 解密:

    • 常规讲MD5是不存在解密的,但是理论上MD5可以反向暴力破解,暴力破解的原理就是用很多不同的数据进行加密后跟已有加密数据进行对比,由此来寻找规律。理论上只要数据量足够庞大即可,但是实际中要考虑破解成本(时间和机器性能)。假设破解当前MD5密码需要目前计算能力最优秀的计算机工作100年才能完成破解,那么当前的MD5密码就是安全的
  • 增加破解成本的方法

    • 使用一段无意义且随机的私钥进行MD5加密会生成一个加密串,称为串1
    • 将要加密的数据跟串1拼接,再进行一次MD5,这时会生成串2
    • 将串2再次进行MD5加密,这时生成的串3就是我们加密后的数据
  • 我们在注册账号时密码一般都是MD5加密

AES DES对称加密

DES全称为Data Encryption Standard ,即数据加密标准,是一种使用秘钥加密的算法,该加密算法是一种对称加密方式,其加密运算、解密运算需要使用的是同样的秘钥(一组字符串)即可。
注意:

  • 现在用的AES这个标准来替代原先的DES

  • AES和DES的区别:

    • 加密后秘文长度的不同

      • DES加密后密文长度是8的整数倍
      • AES加密后密文长度是16的整数倍
    • 应用场景的不同

      • 企业级开发使用DES足够安全
      • 如果要求更高使用AES
    • DES和AES切换只需要修改CrytoJS.AES<=>CryptoJS.DES

使用DES/AES进行数据交换时要求双方都拥有相同的私钥
破解方法:

  1. 暴力破解
  2. DES如果使用56位的秘钥,则可能的秘钥数量是2的56次方个。只要计算足够大是可以破解的

DES算法的入口参数有三个:

  • Key、Data、Mode、padding

    • Key为7个字节共56位,是DES算法的工作秘钥
    • Data为8字节64位,是要被加密或被解密的数据
    • Mode为DES的工作方式
    • padding为填充模式,如果加密后密文长度如果达不到指定整数倍(8字节、16字节),填充对应字符 。padding的赋值固定为CryptoJS.pad.Pkcs即可

RSA加密

RSA加密算法是一种非对称加密算法。在公开秘钥加密和电子商业中RSA被广泛使用
非对称加密算法需要两个秘钥:

  • 公开秘钥(publickey:简称公钥)
  • 私有秘钥(privatekey:简称私钥)
  • 公钥和私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密,因为加密和解密使用的是两个不同的秘钥,所以这种算法叫做非对称加密算法

注意:

  • 使用时都是使用公钥加密使用私钥解密。公钥可以公开,私钥自己保留
  • 算法强度复杂、安全性依赖于算法于秘钥但是由于其算法复杂,而是的加密解密速度没有对称加密的速度快

使用流程和场景介绍:

  • 通过公钥加密,使用私钥解密,私钥是通过公钥计算生成的,假设ABC三方之间相互要进行加密通信。大家相互之间使用公钥进行信息加密,信息读取使用各自对应的私钥进行信息解密
  • 用户输入的支付密码会通过RSA加密

公钥私钥生成方式:公私钥可以可以在线生成:http://web.chacuo.net/netrsakeypair

base64伪加密

Base64是一种用64个字符来表示任意二进制数据的方法。base64是一种编码方式而不是加密算法,知识看上去像是加密而已
使用A-Z,a-z,0-9,+,/ 这64个字符实现对数据加密

https加密

https是基于http和SSL/TLS实现的一个协议,它可以保证在网络上传输的数据都是加密的,从而保证数据安全
如何实现https

  1. http协议是不安全的
    在https诞生之前,所有网站都是使用的http协议,而http协议在数据传输的过程中都是明文,所以可能存在数据泄露和篡改
  2. 使用对称秘钥进行数据加密
    为了防止数据泄露和篡改,我们对数据进行加密,如:生成一个对称密码,将对称秘钥分别交给浏览器和服务器端,他们之间传输的数据都使用对称秘钥进行加密和解密

3.请求和响应流程如下:

  • 客户端使用对称秘钥对请求进行加密,并发送给服务器

  • 服务端接收到密文后,使用对称秘钥对密文进行解密,然后处理请求,最后再使用对称秘钥把返回的内容再次加密,返回给看客户端

  • 客户端接收密文之后,使用对称秘钥进行解密,并获取最终的响应内容

    这样,数据局传输传输都是密文,解决了明文传输数据的问题,但是这样会有bug。

  • 浏览器如何获取对称秘钥

  • 每个客户端的对称秘钥相同,浏览器能拿到对称秘钥,那黑客也能拿到,所以数据加密就没有意义了

  1. 动态对称秘钥和非对称秘钥
  • 这样就解决了动态对称秘钥和数据加密的问题,因为每个用户的对称秘钥都是随机生成且传输的过程都使用公钥加密(公钥的加密数据只能有私钥能解密),所有何可无法截获对称秘钥。而数据传输是通过对称秘钥加密过的,所以黑客即使能获取数据也无法去解密可看到真是的内容,看似无懈可击,但是这样还是会出现bug
  • 如果黑客在步骤2进行劫持,把自己的公钥返回给客户端,那客户端会使用黑客的公钥来加密对称秘钥,黑客在步骤6截获请求,使用自己的私钥获取对称秘钥,后面过程全都失去作用
  1. CA证书的应用

js逆向-常见的加密算法相关推荐

  1. JS逆向-常见反调试之“无限Debugger”,怎么解决?

    前言 本文是该专栏的第34篇,后面会持续分享python爬虫干货知识,记得关注. 首先来说下反调试,一般将反调试理解为"影响正常调试的都属于反调试",其大致包括压缩混淆加密,无限d ...

  2. Python爬虫——教你js逆向爬取网易云评论

    大家好!我是霖hero 正所谓条条道路通罗马,上次我们使用了Selenium自动化工具来爬取网易云的音乐评论,Selenium自动化工具可以驱动浏览器执行特定的动作,获得浏览器当前呈现的页面的源代码, ...

  3. js rsa解密中文乱码_建议收藏 | 最全的 JS 逆向入门教程合集

    点击上方"咸鱼学Python",选择"加为星标" 第一时间关注Python技术干货! 嘿,大家好,截止今天咸鱼零零散散分享爬虫.数据分析基础和 Web 的内容已 ...

  4. 送书 | 用啥selenium!JS逆向不香吗?

    大家好!我是啃书君 正所谓条条道路通罗马,上次我们使用了Selenium自动化工具来爬取网易云的音乐评论,Selenium自动化工具可以驱动浏览器执行特定的动作,获得浏览器当前呈现的页面的源代码,做到 ...

  5. JS逆向之常见编码和混淆加密方式(二)

    继上篇讲到JS的一些常见编码加密方式后,本篇继续讲解一下编码加密方式. JS加密方式: 1.HMAC 加密 2.DES对称加密 3.AES 对称加密 4.RSA 非对称加密 5.https 对称密钥加 ...

  6. js逆向之加密算法介绍

    目录 前言 一.js常见的加密方式 Md5加密 对称加密DES/AES 非对称加密RSA base64伪加密 前言 何为逆向:与逆向相对的是正向,正向即采用某种加密方式对数据进行加密,或对加密代码进行 ...

  7. JS逆向寻找生成bid变量的加密算法,一顿操作猛如虎,结果发现原来是混淆代码

    分享一下最近我JS逆向的心得. 我最近使用Python爬取某个网站某个链接,用requests的get发送请求得到的status_code不是200,请求失败.在浏览器的开发者工具里查看该链接的详细信 ...

  8. Js逆向教程17-极验滑块 实现加密算法的逻辑

    Js逆向教程17-极验滑块 实现加密算法的逻辑 还是和上节课一样,针对这个网址 https://www.geetest.com/demo/slide-float.html 一.加密算法的结果查看 计算 ...

  9. js逆向之常见的压缩和混淆

    js逆向之常见的压缩和混淆 在Web系统发展早期,Js在Web系统中承担的职责并不多,Js文件比较简单,也不需要任何的保护.随着Js文件体积的增大和前后端交互增多,为了加快http传输速度并提高接口的 ...

最新文章

  1. 如何在TortoiseGit中使用ssh-keygen生成的key
  2. SQLServer服务的运行与登录
  3. 详解KMP算法原理,以及完整java与C++实现
  4. How to check if one event is cancel event - #Exit#
  5. 大数据领域的专精特新“小巨人”中科闻歌
  6. Linux 后台执行脚本或命令 nohup
  7. 公有云、私有云、混合云的区别比较
  8. k8s 命令 重启_k8s基本命令
  9. PC机中各类存储器的逻辑连接情况
  10. worder字体网页字体对照表
  11. 网站换服务器步骤,【大拿分享】六个步骤搞定更换网站服务器
  12. PM_29 实施条例、合同法、著作权法
  13. 校园财务管理系统——数据库设计
  14. python 三维地球_python的matplotlib的模拟太阳-地球-月亮运动
  15. 在线电子书阅读微信小程序 毕业设计(3)图书列表
  16. 009 系统镜像ISO GHO WIM和ESD的区别
  17. 根据身份证号判断性别、年龄、生日
  18. springboot的jsp应该放在哪_七、SpringBoot项目集成JSP以及项目不同启动方式及访问路径配置...
  19. 【转】如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源
  20. 【Unity教程】如何动态更换精灵图片在图集中更换精灵图片

热门文章

  1. administrator无法创建新用户的解决
  2. 微信和qq哪个服务器好,王者荣耀微信区和QQ区选哪个比较好-王者荣耀哪个区比较好打 - QT软件园...
  3. “核高基”重大专项取得阶段性成果
  4. 在这个云时代,如何选择性价比更高的云服务器
  5. YOLOv5 修改detect模块以方便调用(单类型目标)
  6. 【leetcode刷题笔记】动态规划
  7. CloseableHttpClient 和 MultipartFile 配合上传文件
  8. 红猫linux系统下载教程,RedCat_NSS_红猫linux软路由安装使用手册
  9. 3. Base64用途和原理
  10. 计算机组成原理复习总结(七)外围设备