单向散列函数
Contents
单向散列函数(One-way hash function)
概念
-
单向散列函数,又被称为消息摘要函数(message digest function),哈希函数
-
输出的散列值,也被称为消息摘要(message digest)、指纹(fingerprint)
特点
-
根据任意长度的消息,计算出固定长度的散列值
-
散列值长度和消息长度无挂
-
无论消息是1bit、10M、100G,单向散列函数都会计算出固定长度的散列值
-
-
计算速度快,能快速计算出散列值
-
消息不同,散列值也不同
-
哪怕是 1bit的不同,散列值也会完全不同
-
-
具备单向性
常用单向散列函数
- 常见的几种单向散列函数
-
MD4、MD5
- 产生128bit的散列值,MD就是Message Digest的缩写,目前已经不安全
- Mac终端上默认可以使用md5命令
-
SHA-1
- 产生160bit的散列值,目前已经不安全
-
SHA-2
- SHA-256、SHA-384、SHA-512,散列值长度分别是256bit、384bit、512bit
-
SHA-3
- 全新标准
-
应用
防止数据被篡改
-
比如,你昨天编写了一个.md文档,今天再看时,如何防止数据被篡改呢?
- 如果对比一遍所有.md文档的内容,内容多的话就会非常费劲
- 这时,使用单向散列函数,对昨天的.md文档计算出一个散列值,再对今天的.md文档计算出一个散列值,只要对比两个散列值是否一致就可以确定文档是否被修改过。
-
再比如,某些网站上,下载应用时,网站会给出这个应用的用某种单向散列函数计算出的散列值
- 这时,如果我们没有在官网上下载应用,而是在某个镜像源网站上下载的应用
- 当下载完应用后,我们使用同样的 单向散列函数 计算下载应用的散列值
- 如果计算出的散列值 和 官网给出的散列值一致, 则为正版软件
- 否则为盗版软件
- 这时 单向散列函数 也起到了防止数据被篡改的作用
另一种应用 - 口令加密
-
比如,某app的登录功能,需要用户输入账号,密码登录。
-
这时,客户端如果直接传密码明文给服务器端,服务端来存储,就会非常不安全,
- 可能在通信过程中被中间人攻击窃取密码
- 也可能,服务器被黑客攻破时,导致大量用户账户密码泄露
-
怎么会更安全呢?
- 单向散列函数出马
- 客户端在向服务端传送数据时,使用单向散列函数加密密码,传输密文
- 服务端存储密文,当下次用户验证时,直接拿密文与服务器保存密文做对比就可以
以上便是我们需要大致了解的关于单向散列函数的内容,我们离学习完成iOS签名机制的路上又近了一步。
Author 飞熊
LastMod Jun 04