龙空技术网

摘要算法

杜杜Love 61

前言:

眼前小伙伴们对“摘要 算法”大约比较关注,小伙伴们都需要知道一些“摘要 算法”的相关资讯。那么小编也在网络上搜集了一些有关“摘要 算法””的相关资讯,希望你们能喜欢,兄弟们一起来学习一下吧!

摘要算法是一种散列函数,它将任意长度的输入数据映射为固定长度的输出数据,称为摘要。摘要算法通常用于文件完整性验证、密码存储、数字签名等领域,因为任何对数据的修改都会导致摘要的改变。

散列填充:

常用的摘要算法有:

MD5:消息摘要算法5 (Message-Digest Algorithm 5, MD5)是一种广泛使用的加密哈希函数,它从任意长度的输入生成128位(16字节)哈希值。它是由Ron Rivest教授在1991年设计的。

MD5输出一个固定长度的哈希值,该值对于输入数据是唯一的。该算法将任意长度的消息作为输入,并生成输入的128位“指纹”或“消息摘要”,通常表示为32位16进制数。然而,由于其设计,MD5很容易受到碰撞攻击(collision attacks),这意味着有可能找到产生相同哈希值的两个不同输入。因此,MD5不再被认为是敏感应用程序的安全哈希函数,并在很大程度上被更安全的算法所取代,如SHA-256或SHA-3。

下面是如何使用MD5的示例: 假设您想验证下载文件的完整性,并且该文件带有MD5校验和。要验证文件的完整性,可以计算下载文件的MD5哈希值,并将其与提供的校验和进行比较。如果两个值匹配,则确认文件的完整性。下面是一个Python代码示例:

在这个例子中,' md5函数将文件的路径作为输入,以4096字节的块读取文件,并使用每个块更新哈希值。最终的哈希值以十六进制字符串的形式返回。然后使用计算散列与提供的校验和之间的比较来确认文件的完整性。

2. SHA:安全散列算法(Secure Hash Algorithm),是一种常用的哈希算法,包括SHA-1、SHA-224、SHA-256、SHA-384和SHA-512等多种版本。

例如SHA-256(安全哈希算法256-bit)从任意长度的输入生成256位(32字节)哈希值,该值对于输入数据是唯一的。它是由美国国家安全局(NSA)在2001年设计的。该算法将任意长度的消息作为输入,并生成输入的256位“指纹”或“消息摘要”,通常表示为64位十六进制数。与MD5不同,SHA-256不容易受到碰撞攻击,被认为是敏感应用程序的安全哈希函数。请注意,虽然SHA-256比MD5更安全,但它也更慢,计算量更大,因此它可能不适合某些需要关注性能的应用程序。

下面是一个Python代码示例:

3. HMAC:散列消息认证码(Hash-based Message Authentication Code),HMAC背后的主要思想是使用散列函数(如SHA-256或MD5)与秘密密钥(对称,无公钥)结合使用,为消息提供完整性和真实性保证。

当发送消息时,发送方使用秘密密钥和哈希函数计算消息的HMAC值,并同时发送消息和HMAC值。当接收方收到消息和HMAC值时,可以通过重新计算HMAC值并将其与收到的HMAC值进行比较来验证消息的完整性和真实性。

下面是一个Python代码示例:

在这个例子中,'hmac_sha256’函数将一个' key '和一个' message '作为输入,并使用SHA-256哈希函数返回消息的HMAC值。'hmac.new'函数用于创建一个HMAC对象,该对象可用于计算HMAC值。hexdigest方法以十六进制字符串的形式返回HMAC值该示例展示了如何使用HMAC值来确认消息的完整性。当发送消息时,发送方使用共享密钥和消息计算HMAC值。接收方然后使用接收到的消息和共享密钥重新计算HMAC值,并将其与接收到的HMAC值进行比较。如果两个值匹配,则消息未被篡改,其完整性已得到确认。

缺点:

首先计算初始消息的消息摘要,然后用对称密钥加密,只有发送方和接收方知道这个密钥,存在密钥交换问题。接收方是如何知道消息来自发送方,而不是来自其他的接收方。所有接收方都知道这个对称密钥,因此很可能以发送方的身份发一个假消息,用HMAC准备这个消息的MAC,发送消息和MAC,就像合法的发送方一样,这是无法阻止和检测的。

4. RIPEMD:可靠消息摘要算法(RACE Integrity Primitives Evaluation Message Digest),是一种常用的哈希算法,输出的摘要长度为160位。

标签: #摘要 算法 #标准摘要算法