单向散列——简介、SHA256加密算法、RIPEMD160加密算法

单向散列——简介、SHA256加密算法、RIPEMD160加密算法

2023年7月27日发(作者:)

单向散列——简介、SHA256加密算法、RIPEMD160加密算法单向散列单向散列算法,⼜称hash函数(杂凑函数,或者杂凑算法),就是把任意输⼊消息字符串变成固定长的输出串的⼀种函数,这个输出串称为该消息的杂凑值,⼀般使⽤产⽣消息摘要,密钥加密等。具体指的是根据输⼊消息计算后,输出固定长度数值的算法,输出数值也成为“散列值”或消息摘要,其长度通常在128~256位之间。输⼊的长度可以是任意的输出长度是固定的,根据⽬前的计算技术应⾄少取128bit长,以便抵抗⽣⽇攻击对每⼀个给定的输⼊,计算输出(即杂凑值)是很容易的。给定杂凑函数的描述,找到两个不同的输⼊消息杂凑到同⼀个值是计算上不可⾏的,或给定杂凑函数的描述和⼀个随机选择的消息,找到另⼀个与该消息不同的消息使得他们杂凑到同⼀个值是计算上不可⾏的。所有的加密算法是公开的具备单向性,不可以逆推反算。经典算法MD4/MD5/SHA系列等。MD4(RFC 1320)是MIT的Ronald 在1990年设计的,MD是Message Digest的缩写。其输出为128位。MD4已被证明不够安全。MD5(RFC 1321)是Rivest于1991年对MD4的改进版本。它对输⼊仍以512位进⾏分组,其输出是128位。MD5⽐MD4更加安全,但是过程更加复杂,计算速度也慢⼀些。MD5已被证明不具备”强抗碰撞性”。SHA(Secure Hash Algorithm)并⾮⼀个算法,⽽是⼀个Hash函数族。NIST(NationalInstitute of Standards andTechnology)于1993年发布其⾸个实现。知名的SHA-1算法1995年⾯世,它输出长度160位的Hash值,抗穷举性更好。SHA-1设计模仿了MD4算法,采⽤类似原理。SHA-1已被证实不具备“强扛碰撞性”。为了提⾼安全性,NIST还设计出了SHA-224、SHA-256、SHA-384和SHA-512算法(SHA-2),跟SHA-1算法原理类似。SHA-3相关算法也已经被提出。、SHA256现在还是有很多系统采⽤的MD5和SHA-1算法,但是这些算法已经不安全了,⼀般现在推荐⾄少使⽤SHA-256或更安全的算法。⽬前来说,安全系数还是不错的,都是国际标准加密算法,现在市场上的很多透明加密软件都有采⽤此加密算法,包括⽐特币⽐特币使⽤的是POW共识算法,它就是使⽤sha256杂凑函数,来计算⼀个与当时总算⼒相对应的⼀个hash值,从⽽可以获得⽐特币。sha256的hash输出值是16进制的字符串,⽽16进制字符串,每两个字符占⼀个字节,⼀个字节= 8bit,所以使⽤sha256杂凑函数得到的是⼀个256bit的值,当然,如果需要的话,也可以使⽤安全系数更⾼的sha512算法。RIPEMDRIPEMD(RACE原始完整性校验讯息摘要)是⼀种加密哈希函数,由鲁汶⼤学的Hans Dobbertin,Antoon Bosselaers 和 Bart Prenee组成的COSIC 研究⼩组发布于1996年。 RIPEMD是以MD4为基础原则所设计的 ,⽽且其表现与更有名的SHA-1类似。RIPEMD-160是以原始版RIPEMD所改进的160位元版本,⽽且是RIPEMD系列中最常见的版本。 RIPEMD-160是设计给学术社群所使⽤的,刚好相对于国家安全局 所设计SHA-1和SHA-2算法。 另⼀⽅⾯,RIPEMD-160⽐SHA-1较少使⽤,所以可能造成RIPEMD-160⽐SHA还不常被审查。另外,RIPEMD-160并没有任何专利所限制。RIPEMD160哈希值的输出值⼀般是16进制的字符串。⽽16进制字符串,每两个字符占⼀个字节。我们知道,⼀个字节=8bit.所以使⽤ripemd160加密函数所得到的是⼀个160bit的值。KeccakSHA-3第三代安全散列算法(Secure Hash Algorithm 3),之前名为Keccak(念作/ˈkɛtʃæk/或/kɛtʃɑːk/))算法,设计者宣称在IntelCore 2 的CPU上⾯,此算法的性能是12.5cpb(每字节周期数,cycles per byte)。不过,在硬件实做上⾯,这个算法⽐起其他算法明显的快上很多。SHA3采⽤Keccak算法,在很多场合下Keccak和SHA3是同义词,但在2015年8⽉SHA3最终完成标准化时,NIST调整了填充算法,标准的SHA3和原先的Keccak算法就有所区别了。在早期的Ethereum相关代码中,普遍使⽤SHA3代指Keccak256,为了避免和NIST标准的SHA3混淆,现在的代码直接使⽤Keccak256作为函数名keccak算法是⽐较复杂的,这⾥只讨论这个算法的特征。⾸先他是采⽤了海绵结构, 什么是海绵结构呢,⾸先海绵是可以吸⽔的,吸了⽔以后呢⼜可以挤压将⽔给挤压出来,保持整个海绵的结构不变。所以海绵结构的⼯作原理是先输⼊我们要计算的串,然后对串进⾏⼀个填充,将输⼊串⽤⼀个可逆的填充规则填充并且分块,分块后就进⾏吸⽔的阶段,当处理完所有的输⼊消息结构以后,海绵结构切换到挤压状态,挤压后输出的块数可由⽤户任意选择。

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690460887a352584.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信