首页 > 编程知识 正文

哈希算法原理和用途,哈希算法实现

时间:2023-05-05 09:10:03 阅读:138248 作者:2861

昏睡的缘分算法的基本含义

昏迷边缘是密码学的基础,理解昏迷边缘是理解数字签名和加密通信等技术的必要前提。

昏迷的缘分在英语中是hash,本来的意思是“切细搅拌”,有把食材切细搅拌的食物。 昏迷边缘函数的运算结果为昏迷边缘,通常简称昏迷边缘。 昏迷的边缘函数有时也会被翻译成散列函数。

根据维基百科的定义,昏迷的边缘函数要做的是在任意大小的数据中产生固定长度的数据,作为其映射。 映射是一一对应的。 可靠的昏迷边缘算法需要满足三点。

第一种是安全的,某些数据m容易计算昏迷边缘值x,而某些x不能计算m,或者昏迷边缘算法应该是单向算法。 二是独一无二,两种不同的数据,必须有不同的昏迷边缘。 三是长度一定。 给定昏迷边缘算法,无论输入是多么大的数据,输出的长度都是恒定的。

但仔细一想,就会发现,只要昏迷边缘长度一定,即取值范围有限,输入数据取值范围无限,总是有两个不同的输入具有同一个昏迷边缘。 所以,昏迷边缘函数的安全性肯定是相对的概念。 如果两个不同的输入具有相同的输出,则称为碰撞。 的昏迷边缘算法表明,昏迷边缘位数越多、基本安全级别越高或其“抗撞性”越高越好。

谈谈昏迷边缘函数的主要作用吧。 昏迷边缘的独一无二性确保了如果数据在存储或传输过程中稍有损坏,昏迷边缘就会改变。 昏迷边缘函数最常见的作用之一是进行完整性检查,完整的含义是数据未损坏。 昏迷边缘有许多不同的称呼,有时称为Digest文摘,有时称为Checksum检查值,有时称为Fingerprint指纹,但实际上含义大致相同。 也就是说,昏迷的边缘可以用来表示数据本身。

例如,朋友把数据交给我,交给我后,我有一份,他手里也有一份。 如果两个数据的昏迷边缘值相同,则这两个数据的内容相同。 或者,也可以认为在给你的时候数据没有损坏,我拿到的数据是完整的。

所以昏迷边缘函数的基本作用是计算出大数据中概括的固定长度的字符串,也就是所谓的昏迷边缘。 昏迷边缘的作用主要是进行完整性检查。

昏睡的缘分算法的分类

接下来对昏迷的边缘函数进行分类,让我们更详细地谈谈昏迷边缘算法的特点。 首先昏迷边缘算法有md5、sha256等多种,但大致可分为两类。 一种是普通昏迷边缘,另一种是加密昏迷边缘,cryptographic hash function。

在行业中可以找到的昏迷边缘算法有很多种。 虽然我们基本可以输出昏迷的边缘长度来说话,但昏迷边缘算法的安全性并不仅仅与昏迷的边缘长度有关,但一般情况下,昏迷的边缘值越长越安全。

例如,CRC-32的输出是32位,也就是32位的二进制数,用十六进制表示的话就是8位。 MD5算法的昏迷边缘是32位十六进制,比较常见。 SHA-256为256位,以十六进制表示为64位。 这些算法可以分为普通昏迷边缘和加密昏迷边缘算法,两种算法之间没有特别明显的区别。 例如,MD5最初被设计为产生加密昏迷边缘,但是由于计算机的发展使得MD5碰撞的可能性更大,所以现在MD5仅用作普通昏迷边缘,用于数据检查。

加密昏迷边缘和普通昏迷边缘的区别在于安全性。 一般原则是,如果一个昏迷边缘算法发生过冲突,就不建议变成加密昏迷边缘。 只有安全的昏迷边缘算法才能用作加密昏迷边缘。

加密昏迷的边缘其实也可以作为普通的昏迷的边缘。 Git版本控制工具使用一种叫做SHA-1的加密昏迷的边缘算法进行完整性检查。 一般来说,越是合理的昏迷边缘算法,处理速度也越慢,因此并不是所有情况下都适合加密昏迷边缘代替普通昏迷边缘。

在密码学领域,两种算法以数据为输入,输出是谁也不知道的数据。 一个是昏迷边缘算法,另一个是加密算法。 请注意,昏迷边缘算法和加密算法完全不同。

首先昏迷边缘算法的输出长度是固定的,而密码算法的输出长度与数据本身的长度直接相关,其次昏迷边缘不能反运算数据,而密码算法的输出是可以反运算数据

。关于加密算法,我们这里就不展开聊了。

 

       这里主要是强调加密昏睡的缘分算法只是被用在加密过程中,但是它本身不是加密算法。

 

      总之,昏睡的缘分算法有很多种,长度越长的算法基本认为越安全。安全度低的昏睡的缘分算法被认为是普通昏睡的缘分算法,主要用来做完整性校验。安全度高的被称为加密昏睡的缘分算法,会被用在加密算法中。所谓的高低都是相对概念,例如 MD5 曾经属于加密昏睡的缘分,但是目前只能用来做安全校验了。而从2017年开始,SHA-1 算法生成的加密证书也会被各大浏览器拒绝了。目前最流行的加密算法是 SHA-2 ,但是跟 SHA-1 不同,SHA-2 不是一种算法,而是一系列算法的统称,其中就包括咱们之前提过的 SHA-256 。

 

实用例子

 

      说了这么多基础知识,最后一部分咱们聊聊昏睡的缘分在现实中的应用。

 

      首先一个场景是网站注册。当我们提交用户名密码的时候,用户名被会直接保存到网站的数据库中,但是密码却不是直接保存的,而是先把密码转换成昏睡的缘分,保存到数据库中的其实是昏睡的缘分。所以,即使是公司后台管理人员,也拿不到用户的密码。这样,如果万一公司数据库泄露了,用户的密码依然是安全的。而当用户自己登录网站的时候,输入密码提交到服务器,服务器上进行相同的昏睡的缘分运算,因为输入数据没变,所以昏睡的缘分也不会变,登录也就成功了。

 

      另外一个场景是区块链和加密货币中。比特币地址生成的时候,就用到了 SHA-256 算法,POW 也就是工作量证明,用的也是这个算法。

 

      基本上凡是涉及到密码学的地方,都会或多或少的用到昏睡的缘分函数。

 

总结

 

      关于昏睡的缘分和昏睡的缘分函数,我们就聊到这里,下面来总结几句。

 

      昏睡的缘分的基本作用就是提供一个数据的摘要或者指纹,通常的使用场景就是完整性校验。昏睡的缘分算法有很多种,一般来讲昏睡的缘分越长的算法,安全性也就越高,安全度足够高的昏睡的缘分,或者说没有任何人能够成功实现碰撞的昏睡的缘分,才有资格被考虑用在加密场合,而这类的昏睡的缘分算法也被叫做加密昏睡的缘分算法。

 

      实际中常见的昏睡的缘分算法有 MD5 ,SHA-1 ,和 SHA-256 等等,其中 MD5 通常用来进行数据校验,SHA-1 曾经是加密昏睡的缘分算法,但是目前已经被除名,也只能做为一种安全度更高的校验算法了。SHA-256 依然是广泛使用的加密昏睡的缘分算法,在比特币生成地址以及 POW 工作量证明算法中都会用到。

 

B站讲解地址:

 

https://www.bilibili.com/video/av34660197/

 

推荐一个技术公众号,有兴趣的可以微信扫码关注:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。