基于彩虹表碰撞法破解SHA/MD5等hash加密——半非暴力破解哈希逆运算

背景知识

哈希加密算法应用范围广泛,包括但不限于:Unix风格的用户密码(Linux、*BSD、Solaris、AIX、QNX等)、macOS、Windows、Web应用程序(如WordPress)、办公软件(如Notes、Domino)、数据库(如MySQL)、文件系统和磁盘(macOS.dmg、Windows BitLocker)、压缩软件(ZIP、RAR、7Z)、文档文件(PDF、Microsoft Office)等。

常见的哈希加密算法有MD5、SHA1、SHA256、SHA3等,他们都有一个特点,就是算法不可逆,要想通过密文倒推加密前的明文,最可靠的办法是暴力穷举,但其耗时往往是无法接受的。

以14位字母和数字的组合密码为例,共有(26*2+10)^{14}\approx 1.2*10^{25}种可能,即使电脑每纳秒计算一个hash值,也需要4亿年才能穷举,其耗时是不可接受的。

另一种办法是查表法,提前将穷举的结果的原文/密文对保存下来,拿到密文后通过查表找到对应的原文,也就是用空间换时间,但是这种空间代价也是无法接受的,还是以14位字母和数字的组合密码为例,假设密文长度为32字节,那么需要存储

(32+14)*2*10^{25}=9.2*10^{26}\approx 8.4*10^{14}TB

假设1TB硬盘价格1RMB,硬盘费用在8百万亿元人民币,是无法承受的。

为此,有人提出了一种碰撞算法来实现暴力破解哈希加密,并命名为彩虹表密码攻击法,该方法是查表法和暴力穷举法的折中优化,在可接受的存储容量基础上,大大减少计算量。

彩虹攻击技术原理

彩虹攻击本质上是一种暴力破解方法,同时采用了空间换时间的思路,即预先针对某种哈希加密算法生成彩虹表,然后使用彩虹表里面相对少量的值表征了整个超大密码空间值。要弄懂彩虹攻击原理,我们先要弄懂Hash函数工作原理,然后设计一个将哈希值散列到明文空间的Reduce函数,然后再理解彩虹链和彩虹表,最后理解碰撞检测原理。不着急,一个一个来

Hash函数

以最常用的MD5函数为例,我们借助node.js里面的md5模块

var crypto = require('crypto');
var md5 = crypto.createHash('md5');var result = md5.update('MyPasswad').digest('hex');// 输出:5342972619fca82e494ff2fb688f5da2
console.log(result);
// 输出:32
console.log(result.length)

其功能是将输入的 MyPasswad 字符串通过哈希计算,散列对应到一个长度为128bit的大数空间中的某个数,最后通过16进制打印出来。其中有几个重点:

1.均匀性:尽量确保不同的字符串经过哈希计算后会对应到不同的大数,很难找到两个不同的字符串具有相同的哈希值,即实现哈希散列的均匀化,具备高抗碰撞性;

2.单向性:无法从哈希加密结果反向计算加密前的明文字符串,即该计算是单向的,不可逆;

3.唯一性:同一个字符串经过某种哈希计算后得到唯一的大数值。

Reduce函数

Reduce函数的功能是将Hash计算结果的大数转换为一个字符串,同时Reduce函数必须实现大数空间到字符串空间的均匀映射,与Hash函数将字符串映射到大数类似,实现大数到字符串的反向均匀映射,这个均匀性非常重要,是彩虹攻击有效性的关键。

彩虹链

彩虹表

碰撞检测

成功破解

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

亚信安慧AntDB数据库——通信运营商核心系统的全面演进

AntDB数据库源自通信运营商核心系统,经过15年的平稳运行和不断演进,成功跟随通信技术的升级步伐,逐步迈向5G时代,并且在这期间完成了8次大版本的迭代,为行业树立了技术领先的典范。其独特之处在于具备超融合架构&#…

DDAE: Denoising Diffusion Autoencoders are Unified Self-supervised Learners

DDAE: Denoising Diffusion Autoencoders are Unified Self-supervised Learners Paper:https://arxiv.org/abs/2303.09769 Code:https://github.com/FutureXiang/ddae TL; DR:扩散模型的训练其实就是训练一个去噪模型,考虑到类似…

clickhouse连接工具dbeaver

地址 地址: Download | DBeaver Community 安装 表引擎 表引擎之TinyLog 以列文件的形式保存在磁盘上,不支持索引,没有并发控制。一般保存少量数据的小表, 生产环境上作用有限,多用于平时练习测试用。 内存引擎&am…

linux 内核模块

linux 内核模块 1. 内核相关命令与文件内核模块存放位置查看已加载内核模块加载与卸载内核模块修改内核参数永久调整内核参数 2. 常用模块进程调度模块进程间通信模块内存管理模块文件系统模块网络接口模块 Linux 内核采用的是模块化技术,这样的设计使得系统内核可以…

【第四章】用AIGC从0到1为主题乐园定制虚拟科普导游

4.1 场景:H5辅助博物馆的导游导览场景(卡通数字人) 4.1 先给大家体验下效果【采用清华元娲的AIGC平台能力】 形象需要企业方进行美术资源定制开发 点击如下链接: 点击体验 4.2 场景 后台管理,选择背景及FAQ问题库 将…

电脑开机自动断电,简单4招,快速解决!

“不知道我的电脑最近是怎么回事,每次一开机就会出现自动断电的情况,有什么方法可以解决吗?” 在使用电脑时,由于电源供应不稳定或过热,以及各种硬件问题,可能会导致电脑开机自动断电。遇到这种情况&#x…

Kubernetes 学习总结(42)—— Kubernetes 之 pod 健康检查详解

Kubernetes 入门 回想 2017 年刚开始接触 Kubernetes 时,碰到 Pod一直起不来的情况,就开始抓瞎。后来渐渐地掌握了一些排查方法之后,这种情况才得以缓解。随着时间推移,又碰到了问题。有一天在部署某个 springboot 微服务时&…

【笔试强训】Day1_贪心算法_组队竞赛

题目链接:牛客_组队竞赛 目录 题目解析 代码书写 知识补充 题目解析 题目让我们求所有队伍的水平值总和最大 由题可得: 队伍的水平值等于该队伍队员中第二高水平值; 随机给定3*n个数,需要自己组队并且得出队伍水平最大值; 我…

vue-cli3/webpack打包时去掉console.log调试信息

文章目录 前言一、terser-webpack-plugin是什么?二、使用配置vue-cli项目 前言 开发环境下,console.log调试信息,有助于我们找到错误,但在生产环境,不需要console.log打印调试信息,所以打包时需要将consol…

BUUCTF Reverse/[2019红帽杯]Snake

BUUCTF Reverse/[2019红帽杯]Snake 下载解压缩后得到可执行文件,而且有一个unity的应用程序,应该是用unity编写的游戏 打开是一个贪吃蛇游戏 用.NET Reflector打开Assembly-CSharp.dll。(unity在打包后,会将所有的代码打进一个Ass…

Lumerical------按键中断程序执行

Lumerical------中断程序执行 引言正文 引言 在 Lumerical 中,很多时候我们需要通过 sweep 的方式来获取我们想要的结果,然而,有时候当我们运行程序后发现书写的脚本有问题时,我们想要强行终止程序的执行,该怎么办呢&…

[足式机器人]Part4 南科大高等机器人控制课 CH12 Robotic Motion Control

本文仅供学习使用 本文参考: B站:CLEAR_LAB 笔者带更新-运动学 课程主讲教师: Prof. Wei Zhang 课程链接 : https://www.wzhanglab.site/teaching/mee-5114-advanced-control-for-robotics/ 南科大高等机器人控制课 Ch12 Robotic …

竞赛保研 基于情感分析的网络舆情热点分析系统

文章目录 0 前言1 课题背景2 数据处理3 文本情感分析3.1 情感分析-词库搭建3.2 文本情感分析实现3.3 建立情感倾向性分析模型 4 数据可视化工具4.1 django框架介绍4.2 ECharts 5 Django使用echarts进行可视化展示5.1 修改setting.py连接mysql数据库5.2 导入数据5.3 使用echarts…

将H5封装为App:实现跨平台移动应用开发的新趋势

H5技术指的是HTML5、CSS3和JavaScript等一系列前端技术的综合应用。它具有跨平台、开发成本低、开发周期短等优势,可以快速实现丰富的界面和交互效果。而原生应用开发受限于操作系统的差异,需要分别开发不同平台的应用,这就增加了开发成本和工…

记一次redis内存没满发生key逐出的情况。

现象: 从监控上看,redis的内存使用率最大是80%,但是发生了key evicted 分析: 原因1、可能是阿里云监控没抓取到内存100%监控数据。 阿里控制台监控监控粒度是5秒。 内存使用率的计算方法。 used_memory_human/maxmemory 原因2、…

shiro1.10版本后-IniSecurityManagerFactory过期失效

1、问题概述? 今天在研究了shiro的新版本shiro1.13.0版本,发现用了很长时间的IniSecurityManagerFactory工厂失效了。 从下图中可以看出,在新版本中IniSecurityManagerFactory被打上了过期线了。 那么问题来了,新版本如何使用呢…

在SpringBoot中自定义指标并使用Prometheus监控报警

公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享 在10 分钟教你使用Prometheus监控Spring Boot工程中介绍了如何使用Prometheus监控Spring Boot提供的默认指标,这篇介绍如何自定义业务指标,并使用Prometheus进行…

神经网络:模型部署

【一】模型压缩的必要性与可行性? 模型压缩是指对算法模型进行精简,进而得到一个轻量且性能相当的小模型,压缩后的模型具有更小的结构和更少的参数,可以有效降低计算和存储开销,便于部署在端侧设备中。 随着AI技术的…

ERP与智能商品系统在供应链管理上有哪些区别和优势?

ERP系统和智能商品系统在供应链管理方面有以下区别和优势: 范围和综合性:ERP系统涵盖了企业的整个供应链管理过程,包括供应商管理、采购管理、库存管理、生产计划和物流管理等。它可以实现供应链上下游的信息共享和协同,提高供应…

鸿蒙原生应用/元服务开发-Stage模型能力接口(十)下

ohos.app.form.FormExtensionAbility (FormExtensionAbility) 系统能力:SystemCapability.Ability.Form 示例 import FormExtensionAbility from ohos.app.form.FormExtensionAbility; import formBindingData from ohos.app.form.formBindingData; import formP…