单向散列算法,又称hash函数(杂凑函数,或者杂凑算法),就是把任意输入消息字符串变成固定长的输出串的一种函数,这个输出串称为该消息的杂凑值,一般使用产生消息摘要,密钥加密等。具体指的是根据输入消息计算后,输出固定长度数值的算法,输出数值也成为“散列值”或消息摘要,其长度通常在128~256位之间。
-
输入的长度可以是任意的
-
输出长度是固定的,根据目前的计算技术应至少取128bit长,以便抵抗生日攻击
-
对每一个给定的输入,计算输出(即杂凑值)是很容易的。
-
给定杂凑函数的描述,找到两个不同的输入消息杂凑到同一个值是计算上不可行的,或给定杂凑函数的描述和一个随机选择的消息,找到另一个与该消息不同的消息使得他们杂凑到同一个值是计算上不可行的。
-
所有的加密算法是公开的
-
具备单向性,不可以逆推反算。
MD4/MD5/SHA系列等。
MD4(RFC 1320)是MIT的Ronald L.Rivest在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算法。
RIPEMD
RIPEMD
(
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的值。
案例请转:
https://blog.csdn.net/The_Reader/article/details/82972612
Keccak
SHA-3
第三代安全散列算法(Secure Hash Algorithm 3),之前名为
Keccak
(念作/ˈkɛtʃæk/或/kɛtʃɑːk/))算法,设计者宣称在Intel Core 2 的CPU上面,此算法的性能是12.5cpb(每字节周期数,cycles per byte)。不过,在硬件实做上面,这个算法比起其他算法明显的快上很多。
SHA3采用Keccak算法,在很多场合下Keccak和SHA3是同义词,但在2015年8月SHA3最终完成标准化时,NIST调整了填充算法,标准的SHA3和原先的Keccak算法就有所区别了。在早期的Ethereum相关代码中,普遍使用SHA3代指Keccak256,为了避免和NIST标准的SHA3混淆,现在的代码直接使用Keccak256作为函数名
keccak算法是比较复杂的,这里只讨论这个算法的特征。首先他是采用了海绵结构, 什么是海绵结构呢,首先海绵是可以吸水的,吸了水以后呢又可以挤压将水给挤压出来,保持整个海绵的结构不变。所以海绵结构的工作原理是先输入我们要计算的串,然后对串进行一个填充,将输入串用一个可逆的填充规则填充并且分块,分块后就进行吸水的阶段,当处理完所有的输入消息结构以后,海绵结构切换到挤压状态,挤压后输出的块数可由用户任意选择。
单向散列单向散列算法,又称hash函数(杂凑函数,或者杂凑算法),就是把任意输入消息字符串变成固定长的输出串的一种函数,这个输出串称为该消息的杂凑值,一般使用产生消息摘要,密钥加密等。具体指的是根据输入消息计算后,输出固定长度数值的算法,输出数值也成为“散列值”或消息摘要,其长度通常在128~256位之间。输入的长度可以是任意的 输出长度是固定的,根据目前的计算技术应至少取128bit长...
哈希值的输出值一般是16进制的字符串。而16进制字符串,每两个字符占一个字节。我们知道,一个字节=8bit.
以
sha256
为例:
bit :256位bit->64位16进制字符->32个字节。
而
ri
pem
d:
bit:160位,->40位16进制字符->20个字节。
加密库一般用在用户登录的密码,注册密码,用于前端加密。
CryptoJS(crypto.js)是一个为JavaSc
ri
pt提供了各种各样的
加密算法
的JavaSc
ri
pt库。
作用:用前端框架加密后再进行传输,以提高密码传输过程中的安全性。
aes.js, bower.json, cipher-core.js, core.js, crypto-js.js, enc-base64.js, enc-hex.js, enc-latin1.js, enc-utf8.js, enc-utf16.js, evpkdf.js, format-hex.js, format-openssl.js, hmac.js, hmac-md5.js, hmac-
ri
pem
d160
.js, hmac-sha1.js, hmac-sha3.js, hmac-sha224.js, hmac-
sha256
.js, hmac-sha384.js, hmac-sha512.js, index.js, lib-typedarrays.js, md5.js, mode-cfb.js, mode-ctr.js, mode-ct
1998/11/19 12:10 4,187 3way.cpp
1998/12/12 14:23 1,194 3way.h
1998/01/16 23:01 314 3wayval.dat
1998/12/31 20:37 8,977 algebra.cpp
1998/12/29 23:53 7,012 algebra.h
1998/11/19 12:10 2,105 asn.cpp
1998/12/18 19:17 1,486 asn.h
1998/11/19 12:10 2,483 base64.cpp
1998/12/12 14:23 1,087 base64.h
1998/12/31 23:07 24,990 bench.cpp
1998/11/19 12:11 104 bench.h
1998/11/19 12:10 14,267 bfinit.cpp
1998/11/19 12:10 2,443 blowfish.cpp
1998/12/12 14:23 1,177 blowfish.h
1998/01/16 23:01 672 blum1024.dat
1998/01/16 23:01 1,320 blum2048.dat
1998/01/16 23:01 350 blum512.dat
1998/11/29 18:42 3,650 blumgold.cpp
1998/12/12 14:23 1,463 blumgold.h
1998/11/19 12:10 1,068 blumshub.cpp
1998/12/12 14:23 1,107 blumshub.h
1998/11/19 12:10 10,670 cast.cpp
1998/12/12 14:23 1,178 cast.h
1998/11/19 12:10 29,906 cast128s.cpp
1998/11/19 17:59 250 castval.dat
1998/11/19 12:10 4,972 cbc.cpp
1998/12/12 14:23 1,997 cbc.h
1998/12/18 19:17 3,258 config.h
1998/11/19 12:10 4,147 crc.cpp
1998/12/12 14:23 707 crc.h
1998/12/29 23:53 7,060 cryptest.dsp
1998/11/23 22:01 819 cryptest.dsw
1998/12/18 20:13 4,119 cryptlib.cpp
1998/12/29 23:53 13,140 cryptlib.dsp
1999/01/01 00:04 22,994 cryptlib.h
1998/11/24 21:26 5,327 default.cpp
1998/12/12 14:23 1,084 default.h
1998/11/19 12:10 12,518 des.cpp
1998/12/12 14:23 2,599 des.h
1998/01/16 23:01 8,892 descert.dat
1998/11/19 12:10 6,038 dessp.cpp
1998/12/29 23:53 2,030 dh.cpp
1998/12/31 20:37 1,354 dh.h
1998/12/29 23:47 276 dh1024.dat
1998/12/29 23:53 579 dh2.cpp
1998/12/29 23:53 1,607 dh2.h
1998/12/29 23:47 536 dh2048.dat
1998/12/20 18:49 158 dh512.dat
1998/11/19 12:10 18,466 diamond.cpp
1998/01/16 23:01 622 diamond.dat
1998/12/12 14:23 2,868 diamond.h
1998/11/19 12:10 151,497 diamondt.cpp
1998/12/18 19:17 5,771 dsa.cpp
1998/12/18 19:17 2,777 dsa.h
1998/01/16 23:01 9,352 dsa1024.dat
1998/01/16 23:01 598 dsa512.dat
1998/12/29 23:53 5,017 ec2n.cpp
1998/12/29 23:53 2,735 ec2n.h
1998/12/31 20:37 9,179 eccrypto.cpp
1998/12/31 20:37 6,687 eccrypto.h
1998/12/29 23:53 5,939 ecp.cpp
1998/12/29 23:53 2,944 ecp.h
1998/12/18 19:17 4,415 elgamal.cpp
1998/12/18 19:18 1,795 elgamal.h
1998/01/16 23:01 804 elgc1024.dat
1998/01/16 23:01 1,578 elgc2048.dat
1998/01/16 23:01 414 elgc512.dat
1998/11/19 12:11 1,941 eprecomp.cpp
1998/12/12 14:23 1,482 eprecomp.h
1998/12/18 19:18 1,925 files.cpp
1998/12/18 19:18 1,566 files.h
1998/11/19 12:11 1,403 filters.cpp
1998/12/12 14:23 2,648 filters.h
1998/11/19 12:11 3,240 forkjoin.cpp
1998/12/12 14:23 3,221 forkjoin.h
1998/11/19 12:11 626 gf256.cpp
1998/12/12 14:23 1,233 gf256.h
1998/12/29 23:53 14,957 gf2n.cpp
1998/12/29 23:53 8,758 gf2n.h
1998/11/19 12:11 1,754 gf2_32.cpp
1998/12/12 14:23 1,243 gf2_32.h
1998/11/19 12:11 3,926 gost.cpp
1998/12/12 14:23 1,113 gost.h
1998/01/16 23:01 846 gostval.dat
1998/12/18 19:18 4,030 gzip.cpp
1998/12/12 14:23 2,121 gzip.h
1998/11/19 12:11 15,431 haval.cpp
1998/12/12 14:23 1,551 haval.h
1998/01/16 23:01 484 havalcer.dat
1998/11/19 12:11 455 hex.cpp
1998/12/12 14:23 1,173 hex.h
1998/12/12 14:23 1,488 hmac.h
1998/11/19 12:11 6,222 idea.cpp
1998/12/12 14:23 1,074 idea.h
1998/01/16 23:01 770 ideaval.dat
1998/12/29 23:53 51,305 integer.cpp
1998/12/12 14:23 10,304 integer.h
1998/11/19 12:11 2,422 iterhash.cpp
1998/12/12 14:23 869 iterhash.h
1999/01/01 00:10 2,601 license.txt
1998/12/12 14:23 2,633 lubyrack.h
1998/12/29 23:53 10,824 luc.cpp
1998/12/29 23:53 8,243 luc.h
1998/01/16 23:01 684 luc1024.dat
1998/01/16 23:01 1,332 luc2048.dat
1998/01/16 23:01 362 luc512.dat
1998/01/16 23:01 602 lucc1024.dat
1998/01/16 23:01 326 lucc512.dat
1998/01/16 23:01 144 lucdif.dat
1998/01/16 23:01 920 lucs1024.dat
1998/01/16 23:01 496 lucs512.dat
1998/01/21 19:10 601 Makefile
1998/11/24 21:26 6,092 mars.cpp
1998/12/12 14:23 1,086 mars.h
1998/11/24 21:26 6,795 marss.cpp
1998/12/20 18:49 1,030 marsval.dat
1998/12/18 19:18 4,607 md2.cpp
1998/12/18 19:18 457 md2.h
1998/11/24 21:26 4,383 md5.cpp
1998/12/12 14:23 671 md5.h
1998/11/19 12:11 5,369 md5mac.cpp
1998/12/12 14:23 683 md5mac.h
1998/12/12 14:23 1,222 mdc.h
1998/11/24 21:26 1,565 misc.cpp
1998/12/12 14:23 6,121 misc.h
1998/12/29 23:53 4,134 moda
ri
th.h
1998/11/19 12:11 3,108 modes.cpp
1998/12/12 14:23 3,522 modes.h
1998/12/12 14:23 2,342 modexppc.cpp
1998/12/12 14:15 1,147 modexppc.h
1998/12/31 20:37 3,198 mqv.cpp
1998/12/31 20:37 1,820 mqv.h
1998/12/29 23:48 580 mqv1024.dat
1998/12/29 23:48 1,112 mqv2048.dat
1998/12/29 23:47 308 mqv512.dat
1998/12/29 23:53 25,117 nbtheory.cpp
1998/12/29 23:53 5,140 nbtheory.h
1998/12/18 19:18 4,359 nr.cpp
1998/12/18 19:18 3,202 nr.h
1998/01/16 23:01 892 nr1024.dat
1998/01/16 23:01 1,694 nr2048.dat
1998/01/16 23:01 476 nr512.dat
1998/12/18 19:18 3,036 oaep.cpp
1998/12/18 19:18 630 oaep.h
1998/01/16 23:01 18 pch.cpp
1998/12/12 14:23 278 pch.h
1998/12/18 19:18 4,208 pkcspad.cpp
1998/12/18 19:18 1,861 pkcspad.h
1998/12/18 19:18 13,392 polynomi.cpp
1998/12/12 14:23 14,895 polynomi.h
1998/12/18 19:18 5,181 pssr.h
1998/12/18 19:18 2,622 pubkey.cpp
1998/12/18 20:13 10,958 pubkey.h
1998/11/19 12:11 5,280 queue.cpp
1998/12/12 14:23 1,296 queue.h
1998/01/16 23:01 684 rabi1024.dat
1998/01/16 23:01 1,334 rabi2048.dat
1998/01/16 23:01 360 rabi512.dat
1998/12/18 19:18 3,774 rabin.cpp
1998/12/18 19:18 2,827 rabin.h
1998/11/19 12:11 2,190 randpool.cpp
1998/12/12 14:23 1,213 randpool.h
1998/11/24 21:26 3,555 rc2.cpp
1998/12/12 14:23 1,268 rc2.h
1998/12/20 18:49 618 rc2val.dat
1998/11/19 12:11 2,691 rc5.cpp
1998/12/12 14:23 1,319 rc5.h
1998/01/16 23:01 350 rc5val.dat
1998/11/19 17:59 3,345 rc6.cpp
1998/12/12 14:23 1,310 rc6.h
1998/12/20 18:49 728 rc6val.dat
1998/11/19 12:11 9,978
ri
pem
d.cpp
1998/12/12 14:23 689
ri
pem
d.h
1998/11/19 12:11 2,860 rng.cpp
1998/12/12 14:23 1,950 rng.h
1998/12/18 19:18 3,420 rsa.cpp
1998/12/18 19:18 4,462 rsa.h
1998/01/16 23:01 1,212 rsa1024.dat
1998/01/16 23:01 2,378 rsa2048.dat
1998/12/20 18:49 204 rsa400pb.dat
1998/12/20 18:49 892 rsa400pv.dat
1998/01/16 23:01 632 rsa512.dat
1998/01/16 23:01 1,380 rsa512a.dat
1998/12/18 19:18 5,241 rw.cpp
1998/12/18 19:18 3,670 rw.h
1998/12/20 18:49 674 rw1024.dat
1998/12/20 18:49 1,320 rw2048.dat
1998/12/20 18:49 348 rw512.dat
1998/11/19 12:11 6,366 safer.cpp
1998/12/12 14:23 3,897 safer.h
1998/01/16 23:01 1,024 saferval.dat
1998/11/19 12:11 4,400 sapphire.cpp
1998/12/12 14:23 3,181 sapphire.h
1998/11/19 12:11 4,071 seal.cpp
1998/12/12 14:23 1,166 seal.h
1998/11/24 21:26 5,101 secshare.cpp
1998/12/12 14:23 1,666 secshare.h
1998/11/19 12:11 1,454 secsplit.cpp
1998/12/12 14:23 713 secsplit.h
1998/12/18 19:18 8,545 sha.cpp
1998/12/18 19:18 707 sha.h
1998/11/19 12:11 5,393 shark.cpp
1998/12/12 14:23 1,546 shark.h
1998/11/19 12:11 121,963 sharkbox.cpp
1998/01/16 23:01 490 sharkval.dat
1998/12/12 14:23 2,976 smartptr.h
1998/11/19 12:11 5,498 square.cpp
1998/12/12 14:23 1,199 square.h
1998/11/19 12:11 32,669 squaretb.cpp
1998/01/16 23:01 816 squareva.dat
1998/11/19 12:11 1,631 tea.cpp
1998/12/12 14:23 973 tea.h
1998/12/29 23:53 12,167 test.cpp
1998/11/23 21:54 2,477 tiger.cpp
1998/12/12 14:23 875 tiger.h
1998/11/19 12:11 44,710 tigertab.cpp
1998/11/19 12:11 886 usage.dat
1998/12/29 23:53 23,376 validat1.cpp
1998/12/31 23:07 16,623 validat2.cpp
1998/12/18 19:18 16,160 validat3.cpp
1998/12/29 23:53 1,029 validate.h
1998/11/19 12:11 3,934 wake.cpp
1998/12/12 14:23 1,206 wake.h
1998/12/12 14:23 2,116 words.h
1998/12/12 14:23 3,816 xormac.h
1998/11/19 12:11 2,006 zbits.cpp
1998/12/12 14:23 459 zbits.h
1998/11/19 12:11 22,047 zdeflate.cpp
1998/12/12 14:23 2,868 zdeflate.h
1998/12/18 19:18 26,795 zinflate.cpp
1998/12/12 14:23 1,760 zinflate.h
1998/11/24 21:26 28,360 ztrees.cpp
1998/12/12 14:23 5,780 ztrees.h
233 个文件 1,316,136 字节
2 个目录 12,766,175,232 可用字节
哈希算法是将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果
散列
一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到
散列
为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。一般用于快速查找和
加密算法
。
哈希算法又称为摘要算法,它可以将任意数据...
摘要:本文档对序列密码算法ZUC128和ZUC256在32位平台下进行软件实现和评估,包括加密性能和计算MAC的性能,文档最后一章给出ZUC128和ZUC256的性能对比评估结果。
关键词:ZUC128,ZUC256,序列密码,软件实现。
1. 性能测试说明... 1
1.1 对比测试算法说明... 1
1.2 测试环境... 1
1.3 性能测试项说明... 1
1.4 测试...
MD5(Message Digest algo
ri
thm 5,信息摘要算法)
SHA(Secure Hash Algo
ri
thm,安全
散列
算法)
HMAC(Hash Message Authentication Code,
散列
消息鉴别码)
RI
PEM
D(RACE Integ
ri
ty P
ri
mitives Evaluation ...