基础入门-算法解密散列对称非对称字典碰撞前后端逆向MD5AESDESRSA

知识点:

0、算法类型-单向散列&对称性&非对称性
1、算法识别加解密-MD5&AES&DES&RSA
2、解密条件寻找-逻辑特征&源码中&JS分析

应用场景:
1、发送数据的时候自动将数据加密发送(只需加密即可)
安全测试思路:我们需要将我们的Payload也要加密发送过去,这样才符合正常的业务逻辑,所以我们就只需要调用应用的JS加密逻辑进行提交发送测试即可!
2、比如要得到数据的明文(必须要拿到解密算法)
由于各种算法的解密条件不一,密钥,偏移量,私钥等不一定能拿到。

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

一、演示案例-算法识别加解密-MD5&AES&DES&RSA

1、算法加密-概念&分类&类型

单向散列加密 -MD5

单向散列加密算法的优点有(以MD5为例):
方便存储,损耗低:加密/加密对于性能的损耗微乎其微。
单向散列加密的缺点就是存在暴力破解的可能性,最好通过加盐值的方式提高安全性,此外可能存在散列冲突。我们都知道MD5加密也是可以破解的。
常见的单向散列加密算法有:
MD5 SHA MAC CRC
解密条件:密文即可,采用碰撞解密,几率看明文复杂程度

对称加密 -AES

对称加密优点是算法公开、计算量小、加密速度快、加密效率高。
缺点是发送方和接收方必须商定好密钥,然后使双方都能保存好密钥,密钥管理成为双方的负担。
常见的对称加密算法有:
DES AES RC4
解密条件:密文及密钥偏移量加密模式(固定的3-4种),采用逆向算法解密,条件成立即可解密成功

非对称加密 -RSA

非对称加密的优点是与对称加密相比,安全性更好,加解密需要不同的密钥,公钥和私钥都可进行相互的加解密。
缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
常见的非对称加密算法:
RSA RSA2 PKCS
解密条件:密文和公钥或私钥,采用逆向算法解密,条件成立即可解密成功

2、加密解密-识别特征&解密条件

MD5密文特点

1、由数字“0-9”和字母“a-f”所组成的字符串
2、固定的位数 16 和 32位
解密需求:密文即可,但复杂明文可能解不出

BASE64编码特点

0、大小写区分,通过数字和字母的组合
1、一般情况下密文尾部都会有两个等号,明文很少的时候则没有
2、明文越长密文越长,一般不会出现"/“”+"在密文中

AES、DES密文特点

同BASE64基本类似,但一般会出现"/“和”+"在密文中,明文越长,数据越长。
解密需求:密文,加密模式,加密Key,偏移量,条件满足才可解出

RSA密文特点

特征同AES,DES相似,但是长度较长,哪怕明文数据少,加密后的数据也长
解密需求:密文,公钥或私钥即可解出

3、其他密文特点

30余种加密编码类型的密文特征分析(建议收藏)

https://mp.weixin.qq.com/s?__biz=MzAwNDcxMjI2MA==&mid=2247484455&idx=1&sn=e1b4324ddcf7d6123be30d9a5613e17b&chksm=9b26f60cac517f1a920cf3b73b3212a645aeef78882c47957b9f3c2135cb7ce051c73fe77bb2&mpshare=1&scene=23&srcid=1111auAYWmr1N0NAs9Wp2hGz&sharer_sharetime=1605145141579&sharer_shareid=5051b3eddbbe2cb698aedf9452370026#rd

CTF中常见密码题解密网站总结(建议收藏)

https://blog.csdn.net/qq_41638851/article/details/100526839

CTF密码学常见加密解密总结(建议收藏)

https://blog.csdn.net/qq_40837276/article/details/83080460

二、演示案例-解密条件-有源码找逻辑&无源码JS逆向

安全测试中:

1、密文-有源码直接看源码分析算法(后端必须要有源码才能彻底知道)

X3.2-md5&salt-密码存储(后端处理)

在这里插入图片描述

DZ对应代码段-/uc_server/model/user.php

function add_user() {
$password = md5(md5($password).$salt);}

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

<?PHP
$h = 'd7192407bb4bfc83d28f374b6812fbcd';
$hash=md5(md5('123456').'3946d5');
if($h==$hash){
echo 'ok';
}else{
echo 'no';
}
?>

在这里插入图片描述

<?php
function reverse_md5_hash_with_salt($final_hash, $salt, $dictionary_file) {// 打开字典文件$file = fopen($dictionary_file, "r");if (!$file) {die("无法打开字典文件!");}// 遍历字典文件中的每一行(即每一个密码)while (($password = fgets($file)) !== false) {// 去除密码两侧的空白字符(包括换行符)$password = trim($password);// 第一次 MD5 加密密码$md5_hash = md5($password);// 拼接 md5($password) 和 salt$salted_hash = $md5_hash . $salt;// 第二次 MD5 加密$final_attempt = md5($salted_hash);// 检查是否匹配if ($final_attempt === $final_hash) {fclose($file);return $password;  // 找到匹配的密码}}// 如果没有找到匹配的密码fclose($file);return null;
}
// 给定的目标加密值和盐值
$final_hash = "125648dbf16531ab7e6b2f8ec8003ea7";  // 目标 MD5 值
$salt = "3e3790";  // 盐值
// 字典文件路径
$dictionary_file = "weaksauce.txt";  // 字典文件路径
// 调用函数进行密码破解
$password = reverse_md5_hash_with_salt($final_hash, $salt, $dictionary_file);
// 输出结果
if ($password) {echo "破解成功,密码是: $password";
} else {echo "密码破解失败";
}
?>

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

X3.5-hash-密码存储(后端处理)

在这里插入图片描述
DZ对应代码段-/uc_server/model/user.php

function add_user() {
$salt = '';
$password = $this->generate_password($password);}
function generate_password($password) {
$algo = $this->get_passwordalgo();
$options = $this->get_passwordoptions();
$hash = password_hash($password, $algo, $options);
}

在这里插入图片描述

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

<?PHP
$hash = '$2y$10$KA.7VYVheqod8F3X65tWjO3ZXfozNA2fC4oIZoDSu/TbfgKmiw7xO';
if (password_verify('123456', $hash)) {echo 'ok';
} else {echo 'error';
}
?>

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

<?PHP
$hash = '$2y$10$PDACNCRyZzcsknF8zvL4yu7YHIPQTN8F635PxQeXSB8QxxDZSXrd.';
$dictionary_file = "weaksauce.txt";
$file = fopen($dictionary_file, "r");if (!$file) {die("无法打开字典文件!");}// 遍历字典文件中的每一行(即每一个密码)while (($password = fgets($file)) !== false) {// 去除密码两侧的空白字符(包括换行符)$password = trim($password);echo $password."<br>";if (password_verify($password, $hash)) {echo 'ok';} else {echo 'error';} }
?>

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

2、密文-没有源码1、猜识别 2、看前端JS(加密逻辑是不是在前端)

博客登录-zblog(前端处理)-数据通讯

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

<script src="script/md5.js" type="text/javascript"></script>
$("#btnPost").click(function(){var strPassWord=$("#edtPassWord").val();
$("form").attr("action","cmd.php?act=verify");
$("#password").val(MD5(strPassWord));

在这里插入图片描述

console.log-(MD5("123456"));

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

某通快递登录-混合加密(前端处理)-数据通讯

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

<script src="/Scripts/Vip/Login.js?v=20241202154949"></script>
function Login() {
logindata.UserName = encodeURI(encrypt.encrypt(numMobile));
logindata.Mobile = encodeURI(encrypt.encrypt(numMobile));;
logindata.Password = encodeURI(encrypt.encrypt(numPassword));
}

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

var encrypt = new JSEncrypt();
encodeURI(encrypt.encrypt('13554365566'));

在这里插入图片描述

3、密文

解密网站:http://tool.chacuo.net/cryptdes
明确以下三种加密算法加解密条件

对称AES加解密

在这里插入图片描述

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

对称DES加解密

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

非对称RSA加解密

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/894940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt修仙之路2-1 炼丹初成

widget.cpp #include "widget.h" #include<QDebug> //实现槽函数 void Widget::login1() {QString userusername_input->text();QString passpassword_input->text();//如果不勾选无法登入if(!check->isChecked()){qDebug()<<"xxx"&…

【R语言】环境空间

一、环境空间的特点 环境空间是一种特殊类型的变量&#xff0c;它可以像其它变量一样被分配和操作&#xff0c;还可以以参数的形式传递给函数。 R语言中环境空间具有如下3个特点&#xff1a; 1、对象名称唯一性 此特点指的是在不同的环境空间中可以有同名的变量出现&#x…

【redis】缓存设计规范

本文是 Redis 键值设计的 14 个核心规范与最佳实践&#xff0c;按重要程度分层说明&#xff1a; 一、通用数据类型选择 这里我们先给出常规的选择路径图。 以下是对每个步骤的分析&#xff1a; 是否需要排序&#xff1f;&#xff1a; zset&#xff08;有序集合&#xff09;用…

2021 年 9 月青少年软编等考 C 语言五级真题解析

目录 T1. 问题求解思路分析T2. 抓牛思路分析T3. 交易市场思路分析T4. 泳池思路分析T1. 问题求解 给定一个正整数 N N N,求最小的 M M M 满足比 N N N 大且 M M M 与 N N N 的二进制表示中有相同数目的 1 1 1。 举个例子,假如给定 N N N 为 78 78 78,二进制表示为 …

Windows 中学习Docker环境准备2、Docker Desktop中安装ubuntu

Windows 中学习Docker环境准备1、Win11安装Docker Desktop Windows 中学习Docker环境准备2、Docker Desktop中安装ubuntu Windows 中学习Docker环境准备3、在Ubuntu中安装Docker 需要更多Docker学习视频和资料&#xff0c;请文末联系 一、安装 Docker Desktop 下载 Docker…

LabVIEW2025中文版软件安装包、工具包、安装教程下载

下载链接&#xff1a;LabVIEW及工具包大全-三易电子工作室http://blog.eeecontrol.com/labview6666 《LabVIEW2025安装图文教程》 1、解压后&#xff0c;双击install.exe安装 2、选中“我接受上述2条许可协议”&#xff0c;点击下一步 3、点击下一步&#xff0c;安装NI Packa…

PHP ODBC:深入探索数据库连接与交互技术

PHP ODBC:深入探索数据库连接与交互技术 引言 PHP作为一种广泛使用的服务器端脚本语言,在Web开发中扮演着重要角色。在数据处理方面,PHP与数据库的交互是其核心功能之一。ODBC(Open Database Connectivity)作为一种标准数据库访问接口,允许PHP应用程序与各种数据库系统…

AUTOSAR汽车电子嵌入式编程精讲300篇-基于FPGA的CAN FD汽车总线数据交互系统设计

目录 前言 汽车总线以及发展趋势 汽车总线技术 汽车总线发展趋势 CAN FD总线国内外研究现状 2 系统方案及CAN FD协议分析 2.1系统控制方案设计 2.2 CAN FD总线帧结构分析 2.2.1数据帧分析 2.2.2远程帧分析 2.2.3过载帧分析 2.2.4错误帧分析 2.2.5帧间隔分析 2.3位…

BUU17 [RoarCTF 2019]Easy Calc1

自用 源代码 $(#calc).submit(function(){$.ajax({url:"calc.php?num"encodeURIComponent($("#content").val()),type:GET,success:function(data){$("#result").html(<div class"alert alert-success"><strong>答案:&l…

5. k8s二进制集群之ETCD集群部署

下载etcd安装包创建etcd配置文件准备证书文件和etcd存储目录ETCD证书文件安装(分别对应指定节点)创建证书服务的配置文件启动etcd集群验证etcd集群状态继续上一篇文章《k8s二进制集群之ETCD集群证书生成》下面介绍一下etcd证书生成配置。 下载etcd安装包 https://github.com…

Java并发编程笔记

Java并发基础知识补全 启动 启动线程的方式只有&#xff1a; 1、X extends Thread;&#xff0c;然后X.start 2、X implements Runnable&#xff1b;然后交给Thread运行 线程的状态 Java中线程的状态分为6种&#xff1a; 1. 初始(NEW)&#xff1a;新创建了一个线程对象&…

使用多模态大语言模型进行深度学习的图像、文本和语音数据增强

在过去的五年里&#xff0c;研究方向已从传统的机器学习&#xff08;ML&#xff09;和深度学习&#xff08;DL&#xff09;方法转向利用大语言模型&#xff08;LLMs&#xff09;&#xff0c;包括多模态方法&#xff0c;用于数据增强&#xff0c;以提高泛化能力&#xff0c;并在…

Windows Docker笔记-Docker拉取镜像

通过在前面的章节《安装docker》中&#xff0c;了解并安装成功了Docker&#xff0c;本章讲述如何使用Docker拉取镜像。 使用Docker&#xff0c;主要是想要创建并运行Docker容器&#xff0c;而容器又要根据Docker镜像来创建&#xff0c;那么首当其冲&#xff0c;必须要先有一个…

YOLOv11-ultralytics-8.3.67部分代码阅读笔记-autobatch.py

autobatch.py ultralytics\utils\autobatch.py 目录 autobatch.py 1.所需的库和模块 2.def check_train_batch_size(model, imgsz640, ampTrue, batch-1, max_num_obj1): 3.def autobatch(model, imgsz640, fraction0.60, batch_sizeDEFAULT_CFG.batch, max_num_obj1): …

【文件上传、秒传、分片上传、断点续传、重传】

文章目录 获取文件对象文件上传&#xff08;秒传、分片上传、断点续传、重传&#xff09;优化 获取文件对象 input标签的onchange方法接收到的参数就是用户上传的所有文件 <html lang"en"><head><title>文件上传</title><style>#inp…

Office/WPS接入DS等多个AI工具,开启办公新模式!

在现代职场中&#xff0c;Office办公套件已成为工作和学习的必备工具&#xff0c;其功能强大但复杂&#xff0c;熟练掌握需要系统的学习。为了简化操作&#xff0c;使每个人都能轻松使用各种功能&#xff0c;市场上涌现出各类办公插件。这些插件不仅提升了用户体验&#xff0c;…

FPGA的IP核接口引脚含义-快解

疑问 手册繁琐&#xff0c;怎样快速了解IP核各输入输出接口引脚的含义。 答疑 不慌不慌&#xff0c;手册确实比较详细但繁琐&#xff0c;如何快速知晓该部分信息&#xff0c;涛tao道长给你们说&#xff0c;简单得很&#xff0c;一般新入门的道友有所不知&#xff0c;往往后面…

GnuTLS: 在 pull 函数中出错。 无法建立 SSL 连接。

提示信息 [root@localhost ~]# wget https://download.docker.com/linux/static/stable/x86_64/docker-27.5.1.tgz --2025-02-06 12:45:34-- https://download.docker.com/linux/static/stable/x86_64/docker-27.5.1.tgz 正在解析主机 download.docker.com (download.docker.…

Python3+Request+Pytest+Allure+Jenkins 接口自动化测试[手动写的和AI写的对比]

我手动写的参考 总篇:Python3+Request+Pytest+Allure+Jenkins接口自动化框架设计思路_jenkins python3+request-CSDN博客 https://blog.csdn.net/fen_fen/article/details/144269072 下面是AI写的:Python3+Request+Pytest+Allure+Jenkins 接口自动化测试[AI文章框架] 在软…

告别手动操作!用Ansible user模块高效管理 Linux账户

在企业运维环境中&#xff0c;服务器的用户管理是一项基础但非常重要的任务。比如&#xff0c;当有新员工加入时&#xff0c;我们需要在多台服务器上为他们创建账户并分配合适的权限。而当员工离职或岗位发生变化时&#xff0c;我们也需要迅速禁用或删除他们的账户&#xff0c;…