一.术语定义(在下浅显的理解)
- 明文:例如:"你好安全" 、"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)
评论()
收藏
举报