SHA-1 及散列函数
Git 内部使用校验和方式来校验和标示文件, 这意味着不可能在 Git 不知情时更改任何文件内容或目录内容。
Git 用以计算校验和的机制叫做 SHA-1 散列。
SHA-1
SHA-1 (Secure Hash Algorithm 1)是一种加密哈希函数,生成 160 位(20 字节)的信息摘要,通常用 40 个十六进制数字表示。
1995 年,美国国安局发布 SHA-1。两年前,国安局已经发布过一款安全哈希算法,也就是后来的 SHA-0。SHA-1 和 SHA-0 非常相似,只调整哈希算法,修正了当时已知的缺点。SHA-1、SHA-0 和 MD5 类似,都是从 MD4 发展而来。
SHA-1 是许多安全应用、协议的基础,比如 TLS、SSL、PGP、SSH 和 IPSec,也在分布式版本控制系统中用作标识,比如 Git、Mercurial、Monotone。
SHA-2
SHA-2 跟 SHA-1 有很大不同,它是一组哈希函数,可以产生 224、256、384、512 位的哈希值,分别对应 SHA-224、SHA-256、SHA-384、SHA-512。
SHA-2 是 SHA-1 的升级版,也是许多安全应用、协议的基础,比如 TLS、SSL、PGP、SSH 和 IPSec。
SHA-3
SHA-3 是最新的安全哈希函数标准,正式发布于 2015 年 8 月 5 日。
2006 年,NIST 组织哈希函数大赛,准备挑选新标准,SHA-3。此前 MD5、SHA-0 已被成功攻破,而 SHA-1 理论上也已攻破,NIST 觉得这一类哈希函数已不再安全,需要一种不同的替代方案。结果 Keccak 经过层层筛选,成功入选。
MD5
MD5 生成 128 位(16 字节)的哈希值,通常用 32 个十六进制数字表示,是一种广泛使用的加密哈希函数。