消息摘要算法

一.术语定义(在下浅显的理解)

  • 明文:例如:"你好安全" 、"very good",这种人可以直接看懂的字符序列(其中跟一般的语言无关,可以是任何语种,中文,英文,日语等都是字符序列)。
  • 密文: 例如:  "sda+daz5-das45","ial=sa-5a-dak"。类似这种完全懵逼状态的字符序列。
  • 摘要算法 : 消息摘要算法,即可以理解为形入y=f(x)的形式。其中x是一个任意长度的字符序列。y一定是一定长度的字符序列。
  • 不可逆加密算法: x可推出y。但是y推不出x。

二.消息摘要算法的种类

  • MD5: 英文全名 =”Message-Digest Algorithm 5“,中文翻译 =”消息摘要算法5“。该算法是基于Hash(散列函数变换而来)。加密(摘要)后有128个比特位。
  • SHA-1:英文全名 = ”Secure Hash Algorithm 1“ 中文翻译 = ”安全散列算法1“。该算法加密(摘要后)有160个比特位。最初是Secure Hash Standard(安全散列标准)后改名为SHA-0 这一算法的升级版。
  • 基于SHA的其他变种:有时候下列4种统称为SHA-2
  • SHA-224  加密(摘要后)有224  比特位
  • SHA-256  加密(摘要后)有256  比特位
  • SHA-384  加密(摘要后)有384  比特位
  • SHA-512  加密(摘要后)有512  比特位

三.消息摘要算法的特点

  • 无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。MD5是128比特位,SHA-1是160比特位。
  • 消息摘要看起来是“随机的”。当我们的输入不同,摘要后的比特位肯定不同。看着生成的比特位是杂乱无章的,看起来像是随机生成的一样。但是当重复两次对同一输入进行摘要后结果是一样的。
  • 一般而言对不同的输入进行摘要生成的密文是不同的。但是还是有几率输入不同明文时摘要后的密文相同,这种现象称为碰撞。但是几率非常非常非常小。这也是为什么会有这些SHA变种来到世界上的原因。
  • 消息摘要函数是单向的。例如 ”我今天吃了一个苹果“  进行摘要后为 ”我了一果“ ,你是不能重密文推出明文的。在这里举个例子。当然密文不是长这样的。
  • 好的摘要算法,没有人能从中找到“碰撞”,虽然“碰撞”是肯定存在的。即对于给定的一个摘要,不可能找到一条信息使其摘要正好是给定的。或者说,无法找到两条消息,使它们的摘要相同。

 

posted @ 2021-08-02 00:43  Costin  阅读(474)  评论(0)    收藏  举报