【密码加密原则二】

news2024/12/23 10:46:03

目录

1  密码加密原则(续)

1.1 使用加盐的方式可以使得“密码”

1.2 优缺点


1  密码加密原则(续)

1.1 使用加盐的方式可以使得“密码”

如果用户的密码过于简单,使用加盐的方式可以使得“密码”(其实是盐值和真正的原始密码的组合)变得更复杂,从而降低被收录对应关系的风险!这种做法的根本思想在于“大多计算机的硬盘不足于收录特别大量的数据”。

如果允许使用95种可打印字符作为密码的组成,则8位长度的密码排列组合有 6,634,204,312,890,625 种,想要收录所有可能的8位长度密码与MD5摘要结果的对应关系,大约至少需要 6,634,204,312,890,625 x (8 + 32) 个字符,如果按照每字符占2字节来算,共需要 6,634,204,312,890,625 x (8 + 32) x 2个字节,大约需要消耗 482,701 TB的存储空间!

如果想要通过查询的方式来破解MD5编码的结果,8位长度的全部对应关系需要约50万TB的存储空间,几乎是不现实的!对于尝试破解密码的一方来说,可以采取“预计算的哈希链”来解决此问题!

在使用“预计算的哈希链”做法之前,首先,必须假定原始密码的长度,以6位长度为例,假设原始密码是`123456`,经过MD5编码后,结果是:

e10adc3949ba59abbe56e057f20f883e

接下来,需要设计一个“约简函数”,将以上摘要结果变成6位长度的,此“约简函数”应该如何设计,并没有固定的做法,假设是取出摘要结果中的前6位,则以上摘要结果经过“约简函数”的运算后,就变成了:

e10adc

接下来,再使用MD5对以上约简结果进行编码,得到:

```
96bf38d01b84aa16cf2bb9f55c61ac85
```

然后,重复以上的操作,继续使用约简函数,得到:

```
96bf38
```

继续使用MD5对以上结果进行编码,得到:

```
c6349b59d5ca7f5fa05de13d26fcf20c
```

假设,整个过程持续做10次,数据的变化将是:

```
123456
    e10adc3949ba59abbe56e057f20f883e
    96bf38d01b84aa16cf2bb9f55c61ac85
    c6349b59d5ca7f5fa05de13d26fcf20c
    ac4c4cd7cde8d12f799c72b337af37bb
    068696500ff51c01bc5012884eecd673
    e3225ab333b37defddba2a8022c0c468
    771fd067be8d0fe2195e5df0bc9826cc
    707d8265701e8573695b67cb4d667083
    7750d6017d681c782c0e6bcce65fa2c0
    698ff2cd213ebb4a68c49570d3b3b148
698ff2
```

对最后的结果再次使用约简函数运算,将得到`698ff2`,然后,将最开始的`123456`(原文)和最后得到的`698ff2`(密文)存储到数据库中即可!(最后一步也可以不存约简结果,而是直接存摘要结果)

假设已经某个MD5摘要数据是`e3225ab333b37defddba2a8022c0c468`,当尝试“破解”时,依然使用约简函数得到`e3225a`(与之前的做法保持一致,取出前6位),并与当前数据库的所有“密文”进行对比,如果无此结果,则对`e3225a`使用MD5进行运算,将得到的结果:`771fd067be8d0fe2195e5df0bc9826cc`再次约简,得到`771fd0`,与数据库中的再次对比,如果仍无此结果,则继续重复类似的操作,最多执行10次(与此前的生成过程保持一致),如果其中某1次命中,则密码的原文一定在对应生成过程中,则可以根据数据库中对应的原文`123456`来执行类似的操作,每次使用MD5编码后,都与尝试破解的`e3225ab333b37defddba2a8022c0c468`进行对比,最后,就可以“破解”成功!

1.2 优缺点

使用“预计算的哈希链”是典型的“牺牲时间,换取空间”的做法!

其实,以上做法仍有一部分缺陷:

- 生成对应关系需要消耗大量的时间
- 不同的链中可能存在相同的部分(取决于约简函数的设计)

为了进一步优先这个做法,就有人专门去设计了更优质的约简函数,并且,生成好了以上预计算哈希链的数据库,放在网络上提供下载!具体表现为“彩虹表”。

作为密码的加密方,为了进一步防止密码被破解,可以使用位数更长、组成字符更复杂的,甚至使用随机的盐值!

注意:即使是这样,也无法有效的阻止暴力破解!

个人主页:居然天上楼

感谢你这么可爱帅气还这么热爱学习~~

人生海海,山山而川

你的点赞👍 收藏⭐ 留言📝 加关注✅

是对我最大的支持与鞭策

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

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

相关文章

数据结构-八大排序

八大排序一,直接插入排序二,希尔排序三,选择排序四,堆排序五,冒泡排序六,快速排序1,递归版本(1)hoare法(2)挖坑法(3)前后指…

5 年 Python ,总结的 10 条 Python 使用技巧

今天给大家分享 10 个我平时整理非常实用的 Python 开发小技巧,内容目录如下: 值得一提的是,这 10 个技巧全部收录在我自己写的 《Python黑魔法指南》里。 1. 如何在运行状态查看源代码? 查看函数的源代码,我们通常…

Apache Drill的学习

Drill的下载地址: Index of /dist/drill 上传安装包后,解压,测试环境中,我直接放到/root目录下了 tar -zxvf apache-drill-1.11.0.tar.gz 进入/root/apache-drill-1.11.0/bin 启动命令: ./sqlline -u jdbc:drill:…

VMware创建Linux虚拟机之(四)ZooKeeperHBase完全分布式安装

Hello,world! 🐒本篇博客使用到的工具有:VMware16 ,Xftp7 若不熟悉操作命令,推荐使用带GUI页面的CentOS7虚拟机 我将使用带GUI页面的虚拟机演示 虚拟机(Virtual Machine) 指通过软…

C语言基础

文章目录二. 前言1.vscode 搭建C语言开发环境2.编程语言的演变2-1.计算机语言2-2 解释型vs编译型2-2 面向过程vs面向对象三. C语言基础0.数据存储范围1.变量与常量2.数据类型2-1 整型数据2-2 浮点型数据2-3 字符型数据2-4 格式化输出2-5 输入框语句2-5 字符输入函数2-6 字符输出…

硬件内存模型

Hardware Memory Models 这是Go语言作者之一的rsc语言内存模型相关博文之一;硬件内存模型的笔记。硬件内存模型对应的是汇编指令的执行,可以认为每一条指令原子执行。 Sequential Consistency 顺序一致性模型 多个进程的操作按照一定顺序执行&#xf…

(附源码)ssm小米购物网站 毕业设计 261624

基于ssm小米购物网站 摘 要 近年来,随着移动互联网的快速发展,电子商务越来越受到网民们的欢迎,电子商务对国家经济的发展也起着越来越重要的作用。简单的流程、便捷可靠的支付方式、快捷畅通的物流快递、安全的信息保护都使得电子商务越来越…

[附源码]计算机毕业设计宁财二手物品交易网站Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

数据结构(13)最小生成树JAVA版:prim算法、kruskal算法

目录 13.1.概述 13.2.prim算法 13.2.1.概述 13.2.2.代码实现 13.3.kruskal算法 13.3.1.概述 13.3.2.代码实现 13.1.概述 最小生成树,包含图的所有顶点的一棵树,树的边采用包含在图中的原有边中权重和最小的边。翻译成人话就是遍历一遍全图所有顶点…

Java基于J2EE的流浪动物收容与领养管理系统

随着城市饲养宠物日益增加,流浪动物也越来越多,本文对流浪动物出现的原因,引发的社会问题以及流浪动物的保护等方面进行思考阐述,以期唤醒人们对动物福利的关注和对生命的珍爱。 通过以上的调研研究发现,如此多的流浪动物是如此的…

肠道菌群代谢组学之粪便微生物移植治疗原发性硬化性胆管炎

​ The American Journal of GASTROENTEROLOGY (IF10.241) 10位原发性硬化性胆管炎患者的粪便微生物移植:一个试点的临床试验 研究背景 百趣代谢组学分享,原发性硬化性胆管炎(Primary sclerosing cholangitis,PSC)是…

【Java语言】— 快速入门

Java背景知识 Java是美国sun公司在1995年推出的一门计算机高级编程语言。 Java早期称为Oak(橡树),后改为Java。 Java之父:詹姆斯高斯林。 2009年sun公司被Oracle公司收购。 为什么用Java 世界上最流行的编程语言之一,在国内使用…

生成式AI结合3D、XR怎么玩?NVIDIA、Niantic等公司已入局

最近生成式AI风头有点大,这种技术只需要用文字就能作画,而且效果惊艳,堪比专业画师的作品。其中一些热门的方案包括DALL-E 2、Midjourney、BariumAI、D-ID AI、Stable Diffusion等等,这些工具简单、好玩,已经被无数网友…

BYD精制项目除铜工艺去除铜离子

某精细化工公司BYD精制项目 工艺选择 过滤系统螯合树脂除铜系统合格品回收箱 工艺原理 在不应该1,4丁炔二醇的情况下去除铜离子 项目背景 1,4-丁炔二醇BYD(but-2-yne-1,4-diol)是一种重要的中间体化工原料,广泛应用于生产丁二醇及其下游产…

2022CTF培训(五)字符串混淆进阶代码自解密

附件下载链接 复杂的字符串混淆 原理 之前的字符串混淆是一次性解密的,找到解密函数即可获得所有字符串,同时执行解密函数后内存中也可直接获得所有字符串。 因此对抗人员升级了混淆技术,使得解密仅在使用时发生,从而避免了全部…

微机原理不挂科

微机原理1.计算机基础1.1数制码值转换1.2码制1.3微机组成2.8088/8086微处理器2.1CPU内部结构2.2寄存器2.3存储器分段和地址空间2.4堆栈2.5 8086/8088CPU引脚2.6 时序与总线操作3.指令系统3.2寻址方式3.3语法规则3.4数据传送指令3.5算术运算指令3.6逻辑运算与移位指令3.7串操作指…

(二十) 共享模型之工具【JUC】【线程安全集合类】

一、线程安全集合类概述 线程安全集合类可以分为三大类:(1)遗留的线程安全集合如 Hashtable , Vector(2)使用 Collections 装饰的线程安全集合,如: 1️⃣Collections.synchronizedCo…

[附源码]计算机毕业设计JAVA游戏账号交易平台

[附源码]计算机毕业设计JAVA游戏账号交易平台 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybati…

Redis单机集群

先放张图 上图就是典型的哨兵模式 salve:从服务器,需要进行同步主服务器的数据 master:主服务器,负责执行客户端的请求,将数据更新信息发送给从服务器,保持数据一致 哨兵:接受客户端请求&…

【前端】前端监控体系

文章目录一、所需的数据1.1、生命周期数据1.2、HTTP测速数据1.3、系统异常数据1.4、用户行为数据1.5、用户日志二、埋点与收集2.1、数据埋点2.1、数据上报2.3、数据监控对于一个应用来说,除了前期的开发和设计,在项目上线后端维护很重要,其中…