哈希(Hash)算法介绍
哈希(Hash)算法,即散列函数。它是一种单向密码体制,即它是一个从明文到密文的不可逆的映射,只有加密过程,没有解密过程。同时,哈希函数可以将任意长度的输入经过变化以后得到固定长度的输出。哈希函数的这种单向特征和输出数据长度固定的特征使得它可以生成消息或者数据。
MD5算法介绍
MD5信息摘要算法(英文:MD5 Message-Digest Algorithm),是一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
MD5算法具有不可逆性、高度的离散性、压缩性和弱碰撞性等特性。主要用于密码的加密存储、数字签名、文件完整性验证和文件查重。
2004年,MD5算法被证实无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。2009年,中国科学院的谢涛和冯登国仅用了2^{20.96} 的碰撞算法复杂度,破解了MD5的碰撞抵抗,该攻击在普通计算机上运行只需要数秒钟。
SHA系列算法介绍
安全哈希算法SHA (英文:Secure Hash Algorithm) 是美国国家标准与技术研究院 (NIST) 作为美国联邦信息处理标准 (FIPS) 发布的一系列加密哈希函数。有SHA-0、SHA-1、SHA-2、SHA-3等4类型算法。
其中,SHA-2 包括了SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256等算法;SHA-3 包括了SHA3-224 、SHA3-256 、SHA3-384 、SHA3-512、SHAKE128 、SHAKE256等算法。
SHA加密用于多种方法,包括散列数据、证书文件和其他加密目的,包括比特币等加密货币。这些哈希算法有助于保护现代互联网基础设施的骨干。
SHA-0在发布之后很快就被撤回,并且由1995年发布的修订版本FIPS PUB 180-1(通常称为SHA-1)取代。SHA-0和 SHA-1可将一个最大264比特的消息,转换成一串160位的消息摘要;其设计原理相似于MIT教授Ronald L. Rivest所设计的密码学散列算法MD4和MD5。
2005年,Rijmen和Oswald发表了对SHA-1较弱版本(53次的加密循环而非80次)的攻击:在2^{80}的计算复杂度之内找到碰撞。2005年二月,王小云、殷益群及于红波发表了对完整版SHA-1的攻击,只需少于2^{69}的计算复杂度,就能找到一组碰撞。2005年8月17日的CRYPTO会议尾声中王小云、姚期智、姚储枫再度发表更有效率的SHA-1攻击法,能在2^{63}个计算复杂度内找到碰撞。2017年2月23日,Google公司公告宣称他们与CWI Amsterdam合作共同创建了两个有着相同的SHA-1值但内容不同的PDF文件,这代表SHA-1算法已被正式攻破。
SHA-2是SHA-1的后继者,其下又可再分为六个不同的算法标准,包括了:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256,命名方式是以它们的摘要长度(以比特计算)加在原名后面来命名。
SHA-3,之前名为Keccak算法,是一个加密杂凑算法。SHA-3并不是要取代SHA-2,因为SHA-2目前并没有出现明显的弱点。由于对MD5出现成功的破解,以及对SHA-0和SHA-1出现理论上破解的方法,NIST感觉需要一个与之前算法不同的,可替换的加密杂凑算法,也就是现在的SHA-3。
有疑问加站长微信联系(非本文作者)