gpt4 book ai didi

[信息安全]加密算法:md5摘要算法/sha256算法

转载 作者:我是一只小鸟 更新时间:2023-08-14 22:31:32 26 4
gpt4 key购买 nike

目录 。

  • 1 MD5
    • 1.1 算法定义
    • 1.2 MD5算法不安全的原因
      • 1.2.1 字典表很大
      • 1.2.2 碰撞
      • 1.2.3 暴力攻击速度很快
    • 1.3 MD5不安全,可采取什么方法来提高安全性?
      • 使用长密码
      • 用盐
      • 使用其他哈希函数
  • 2 SHA1
  • 3 SHA256
    • 3.1 算法定义
    • 3.2 算法特点
      • 3.2.1 (输入)消息长度
      • 3.2.2 (输出)摘要长度
      • 3.2.3 单向性(不可逆性)
      • 3.2.4 运算性能高
    • 3.3 算法应用
      • 3.3.1 简单Demo
      • 3.3.2 数字签名验证
      • 3.3.3 SSL握手 & SSL证书(HTTPS)
      • 3.3.4 密码保护 / 数据脱敏
      • 3.3.5 区块链交易 & 比特币
    • 3.4 算法历史:SHA-0/1993 => SHA-1/1995 => SHA-2/2001 => SHA-3/2015
    • 3.5 SHA256 与 MD5 算法的区别?
      • 相同点
      • 不同点
  • X 参考与推荐文献
回到顶部(Back to Top)

1 MD5

1.1 算法定义

  • MD5的全称为 Message-Digest Algorithm ,是一种被广泛使用的 单向 散列函数、属于Hash算法中一种比较重要算法——具有 单项加密 加密结果唯一 安全性能好 等优点。
  • MD5算法可以产生出一个 128位 (16字节)的 散列值(哈希值) ,用于确保信息传输完整一致;以 512位分组 来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

  • 2004年,证实MD5算法 无法防止碰撞 (collision),因此不适用于 安全性认证 ,如SSL公开密钥认证或是数字签名等用途.

  • 对于任意长度的消息,这个摘要相当于是个 长度为16个字节 的数组,通常用一个 长度为32的十六进制字符串 来表示.

  • MD5是一种算法,通常用于在数据库中存储 密码 .

在在Internet初期,网站主要将密码以 明文形式 保存在数据库中,然而这并不安全,因此人们使用MD5来混淆数据库中的密码。 MD5信息摘要算法可以从任何密码,短语或文本中生成32个字符的十六进制字符串,比如:如果用户的密码是654321,那在数据中就会生成 c33367701511b4f6020ec61ded352059 这样的字符串。因此,IT人员就看不到用户的密码,如果有人偷了数据库,就不会直接获得所有密码.

  • MD5 在线解密 的原理与步骤

MD5本身不可逆,但仍然有一些网站声称支持在线解密MD5码.

MD5解密主要是用于攻防演练或网络安全测试,在对网站入侵过程中,获得了管理员或者其他用户账号和密码值。 现在网上有很多流行的MD5在线解密平台和解密工具,其作用也是针对用户密码,或比较简单的密文进行解密,方法是将常用字符串的MD5密码保存到数据库,然后再与待解密的字符串做对比,最终找到匹配的源码。下图是MD5在线加密解密平台流程图:

1.2 MD5算法不安全的原因

1.2.1 字典表很大

在网上有很多md5解密网站(如: https://md5.cn/),就如同一个字典表。通过在数据库存储很多常用的密码,可以在很短的时间内查找任何哈希值的答案。这种数据库占用大量的磁盘空间,具有一定的成功率。在计算机安全领域,一些朋友需要用到MD5解密网站,通过这类型的网站,可以提高工作效率,大家可以去试试.

1.2.2 碰撞

安全的算法具有良好的抗冲突性。 也就是说:对于不同的数据输入,获得相同哈希值的可能性比较低,但是MD5的抗冲突性较低.

1.2.3 暴力攻击速度很快

蛮力攻击是通过尝试多种可能性来查找密码的一种方法,即可以猜测用户可能使用的东西(出生日期,孩子的名字,宠物的名字等),也可以尝试一切(从a,b, c到10个字符的特殊字符密码)。抵御暴力攻击的唯一方法可能是密码长度,如果您拥有40个字符长的随机密码(带有特殊字符),那么目前你的密码可能是安全的.

1.3 MD5不安全,可采取什么方法来提高安全性?

使用长密码

强制用户使用更长的密码(可能是15个字符或更多),此外还可以增加密码的复杂度,以确保他们使用的是大写,小写和特殊字符。但是,人们经常会使用弱密码。因此,很容易被猜到,更糟糕的是,有的人甚至在便签纸上记录密码.

用盐

尝试做的第一件事就是在加密密码时使用salt,基本上,盐是您在每个密码之前和/或之后添加的单词。如果盐是“ randomsaltformypassword”,并且用户选择“ 654321”作为密码,则将“ randomsaltformypassword654321”用作MD5功能参数.

这样,你就可以在数据库中加密更长的密码,并且黑客很难找到相应的密码,请确保选择长字样以充分提高安全性.

使用其他哈希函数

最好的解决方案可能是使用其他加密算法(如:SHA256、...).

虽然这可能不是最简单的方法,因为这可能涉及更改数据库结构,但这可能是最安全的方法.

回到顶部(Back to Top)

2 SHA1

SHA1是一种密码散列函数,可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。 该算法输入报文的长度不限,产生的输出是一个160位的报文摘要。 输入是按512 位的分组进行处理的。 SHA-1是不可逆的、防冲突,并具有良好的雪崩效应.

回到顶部(Back to Top)

3 SHA256

3.1 算法定义

SHA256 算法 (Secure Hash Algorithm 256) 。

  • 一种具有确定性的 单向 哈希函数/ 单向散列函数 (deterministic , one-way , hash , function) 。

  • 256 代表最终的哈希值摘要是 固定长度 的 256位 。

    • 哈希值通常用一个 长度为64的十六进制字符串 (由随机 字母和数字 组成的)来表示,相当于是个长度为32个字节的数组,其中1个字节=8位。即无论明文大小如何,哈希值始终为256 位。
    • 例如:"爱我中华2023" (UTF-8编码) 通过 SHA256运算后,可得其输出的摘要
                        
                          2959c3680fb764ba020aacfd06818f7aaffa7a9133c4864ba98a1ab3239b71ba

                        
                      

简言之,SHA 256通过将消息和文件等数据转换为固定长度为256位的、且难以区分的字符串来保护数据不被截取或篡改。几乎各行各业都会使用SHA256算法,包括政府机构和区块链等创新技术.

  • 数据指纹 :输入的数据长度是任意的,输出的数据长度是 固定 的。可将其输出理解为原数据的 数据指纹
    • 它具有确定性特征。同一输入值,总能得到相同的输出值。
    • SHA256是指输出长度为256位的安全、哈希算法。

3.2 算法特点

3.2.1 (输入)消息长度

输出具有固定大小,但输入没有大小限制.

3.2.2 (输出)摘要长度

  • 摘要长度 消息摘要 (即将加密哈希函数应用于数据的哈希值)长度应为 256 位。

在您的服务器上安装 SSL 证书时,您可以选择SHA-512或更大的摘要。 虽然SHA-512更安全,但不建议将其用于大多数系统,因为它需要更强大计算能力和计算机性能.

3.2.3 单向性(不可逆性)

所有哈希函数(例如 SHA 256)在设计上都是不可逆的。 对于每个输入,您只有一个输出,但反之则不然。多个不同的输入可能产生相同的输出.

  • 单向性(不可逆性)
    • 单向代表了函数很难逆推。
      • 有些函数很容易逆推,如:function y = x + 30(只需-30,就可以逆推回输入数据x)
      • 但如果你要逆推两个大素数的乘法公式,则很难

3.2.4 运算性能高

  • 基于本函数进行运算,以现有计算机算力,支持每秒运算6千亿亿次以上。
    • 其他函数,如 傅里叶变换函数等是无法达到这种运算量级的。

3.3 算法应用

SHA 256 是用于数字签名验证、SSL 握手、密码保护和许多其他安全相关操作的标准哈希算法.

3.3.1 简单Demo

现在请看哈希函数是如何工作的真实示例。假设您写了“便宜SSL证书”的消息并对其应用 SHA-256 哈希函数,将会得到:

                        
                          3868401EDD8E4AE2F804AC3A6215C5EC522AE032F59C13296C1A25CAE4F26C52

                        
                      

现在,我们在消息末尾添加一个感叹号:“便宜SSL证书!”,并生成输出。结果则是这样:

                        
                          EE39F1A692558947B80109483AF80ACC1E3722D533B7A9E7713E823F6E2D2A57

                        
                      

如您所见,仅添加一个字符,哈希值长度保持不变,但是得到的结果完全不同,这也就是为什么sha256比较安全的原因。 如果您要将此消息发送给朋友,则需提供哈希值并指定算法。 您的朋友会在他们的那端验证哈希值,如果匹配,他们就会知道该消息是真实的.

3.3.2 数字签名验证

数字签名是一种 电子签名 ,用于 验证消息 (例如电子邮件、信用卡交易或电子文档)的真实性和完整性。它是通过 散列文件 ,并使用 PKI(公钥基础设施) 对其进行加密而创建的.

SHA 256算法在整个过程中的作用是 保证数字签名的完整性 。接收方的客户端检查自己端的 哈希算法 ,并使用公钥对消息进行解密。如果匹配,则数据是真实有效、未被篡改.

3.3.3 SSL握手 & SSL证书(HTTPS)

  • SSL 握手 是 Web浏览会话 的关键元素,它依赖于 SHA算法 功能。通过SSL/TLS的通信总是从 SSL握手 开始,这是一种 非对称加密技术 ,允许浏览器验证web服务器,获得公钥,并在数据传输开始之前建立一个安全连接.

  • 无论数字证书品牌、价格和类型如何,所有SSL证书的通用规范是采用SHA 256算法,您可以在证书详细信息或产品信息中列出的功能中看到.

  • 根据用于监控 SSL/TLS 支持质量的全球仪表板SSL Pulse称,Alexa全世界最受欢迎的网站列表中,有97.2%的网站使用 SHA-256 算法的SSL证书.

3.3.4 密码保护 / 数据脱敏

  • 网站以 散列格式 存储用户密码。如前所述,哈希使用加密算法将密码转换为一串短的字母和数字。如果网站被黑客入侵,网络攻击者将无法获得哈希密码。

3.3.5 区块链交易 & 比特币

  • SHA-256 算法是创建比特币时用于 加密货币 的第一个算法.

  • 区块头是 区块链 的基本元素,因为它们有助于以 特定顺序 将一个 交易区块 连接到下一个 交易区块 。正如之前提到的,当输入的信息有微不足道的差别,SHA算法也能产生大相径庭的结果.

  • 当 任意区块 发生变化时,都会影响 后续的所有区块 。所以如果想要修改某个区块的内容,就必须修改后许所有区块的内容,而这几乎是不可能的,从而保证了区块数据的安全.

  • 比特币挖矿的过程,就是反向找到输入值的过程.

这个输入值通过SHA256算法产生了一串开头带有约70个0的输出值 但是因为没有已知的公式,每个人能做的也只是通过蛮力一个数一个数去试,直到找到正确的输入值.

不过比特币只需要找到一个接近输入值的哈希值就好,不需要完全匹配.

实际上,挖矿难度可以调整,保证大概每10分钟能够有旷工找到匹配的输入值,然后赚取12.5比特币的出块奖励.

没有人能找到比特币挖矿的捷径,虽然找到捷径存在巨大的经济动力.

这就是为什么 SHA256 是地球上最流行的算法.

3.4 算法历史:SHA-0/1993 => SHA-1/1995 => SHA-2/2001 => SHA-3/2015

安全散列算法是 美国国家安全局 (NSA) 创建的。美国政府为这项技术申请了专利,然后以免版税许可的形式发布,供所有人使用.

第一个 SHA-0 算法可以追溯到 1993 年。紧接着 SHA-1 于1995年问世,尽管已被破解,但现在还是有在一些老版本的服务器和客户端上使用。2001年,NSA发布了 SHA -2 系列算法,其中包括 SHA 256 和其他五个不同算法标准:

  • SHA 224
  • SHA 384
  • SHA 512
  • SHA 512/224
  • SHA 512/256

2015 年 8 月 5 日,NIST(美国国家标准与技术研究院)发布了 SHA -3,这是最新的安全哈希算法,内部算法设计与以往不同。虽然 NIST 目前还没有计划吊销 SHA-2 算法,但如果有必要,SHA-3可以在当前应用中替代掉SHA-2.

3.5 SHA256 与 MD5 算法的区别?

相同点

1、都是密码散列函数,加密不可逆。 2、都可实现对任意长度对象加密,都不能防止碰撞.

不同点

  • 安全性方面: 1、SHA256(称SHA2)的安全性最高;(相对md5和SHA1而言,SHA256很安全) 2、md5相对来说比较容易碰撞,安全性没这么高.

  • 性能方面: 以个60M的件为测试样本,经过1000次的测试平均值,这两种算法的表现如下: MD5算法运1000次的平均时间为:226ms SHA256算法运1000次的平均时间为:473ms 。

总而言之,md5和sha256都是密码散列函数,加密不可逆。虽然都不能防止碰撞,但是相对而言,md5比较容易碰撞,安全性没有sha256高.

回到顶部(Back to Top)

X 参考与推荐文献

  • 比特币挖矿用的SHA256算法是什么? - 百度
  • SHA 256算法是什么?哈希算法特点及应用? - 百度文章
  • MD5不安全的3个原因,用这些方法可以解决 - 百度
  • https://md5.cn/

最后此篇关于[信息安全]加密算法:md5摘要算法/sha256算法的文章就讲到这里了,如果你想了解更多关于[信息安全]加密算法:md5摘要算法/sha256算法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com