package com.dream.util; import java.security.MessageDigest; import java.security.Security; import junit.framework.TestCase; import org.apache.commons.codec.digest.DigestUtils; import org.bouncycastle.crypto.Digest; import org.bouncycastle.crypto.digests.SHA1Digest; import org.bouncycastle.crypto.digests.SHA224Digest; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.util.encoders.Hex; /** * @author zxg * @see SHA 安全散列算法 跟md5的区别主要是明文一样,对应加密后的值密文更加散列,更安全 SHA1,MD5已经被王小云教授破解 */ public class SHATest extends TestCase { private final String str = "zxg is a boy"; /** * jdk SHA1 */ public void testjdkSHA() throws Exception { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(str.getBytes()); System.out.println(Hex.toHexString(md.digest())); } /** * bc SHA1 */ public void testbcSHA1() { Digest digest = new SHA1Digest(); digest.update(str.getBytes(), 0, str.getBytes().length); byte[] sha1Bytes = new byte[digest.getDigestSize()]; digest.doFinal(sha1Bytes, 0); System.out.println(org.bouncycastle.util.encoders.Hex .toHexString(sha1Bytes)); } /** * bc SHA224 */ public void testbcSHA2() { Digest digest = new SHA224Digest(); digest.update(str.getBytes(), 0, str.getBytes().length); byte[] sha224Bytes = new byte[digest.getDigestSize()]; digest.doFinal(sha224Bytes, 0); System.out.println(org.bouncycastle.util.encoders.Hex .toHexString(sha224Bytes)); } /** * bc SHA224 第二种方式 */ public void testbcSHA224_2() throws Exception { Security.addProvider(new BouncyCastleProvider()); MessageDigest md = MessageDigest.getInstance("SHA224"); md.update(str.getBytes()); System.out.println(Hex.toHexString(md.digest())); } /** * apache SHA1 */ public void testccSHA() throws Exception { System.out.println(DigestUtils.sha1Hex(str.getBytes())); } }
相关推荐
SHA (即Secu re Hash AIgorlthm 安全散列算法)是一种 常用的数据加密算法.它由美国国家标准与技术局(NatlonaI InstItute of Standards and TechnoIogy)于1 993年作为联邦信息 处理标准公布(即第一代SHA算法——SHA...
SHA是一种数据加密算法,该算法经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)...
对于SHA安全散列算法,以前没怎么使用过,仅仅是停留在听说过的阶段,今天在看图片缓存框架Glide源码时发现其缓存的Key采用的不是MD5加密算法,而是SHA-256加密算法,这才勾起了我的好奇心,所以趁着晚上没啥事,来...
SHA散列算法,可以非常方便的家密码散列成16进制数据。
1993 年美国国家标准局(NIST)公布了安全散列算法SHA,SHA 已经被美国政府核准作为标准,即FIPS 180 Secure Hash Standard (SHS),FIPS 规定必须用SHS 实施数字签名算法,该算法主要是和数字签名算法(DSA)配合的...
包含两种代码风格,一种是多宏函数操作(来自于老师);另一种多非宏函数函数操作(来自于我自己)。免费获取可联系:mailbox_krj@163.com
MD5,SHA算法的实现与比较(C#) MD5,SHA算法的实现与比较(C#)
散列算法SHA_1,C上面的代码,希望对大家有帮助 ^_^^_^^_^^_^!
用c语言编写的SHA-1散列算法的设计与实现,简单易懂
SHA (Secure Hash Algorithm,译作安全散列算法) 的完整C语言代码。
该算法C源码可移植性强,处理字节类型问题后,和define设定公式后调用API接口函数即刻实现SHA2运算
void sha256_get(uint8_t hash[32], const uint8_t *message, int length);/*此函数用于对消息计算摘要值,输入任意大小消息,输出32字节摘要值*/ void hmac_sha256_get(uint8_t digest[32], uint8_t *message, int...
SHA (Secure Hash Algorithm,译作安全散列算法) 是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数
包含 SHA-1,SHA-256,SHA-512,MD-5,CRC-32,Tiger-192 六种常见散列算法的库。xxx_f 包含计算函数,具有断点续算功能,类名不包括 _f 的仅包含内存操作及比较函数。 用法:反复调用 void append(uint8_t *src, uint64...
•Android数据加密之SHA安全散列算法 什么是Rsa加密? RSA算法是最流行的公钥密码算法,使用长度可以变化的密钥。RSA是第一个既能用于数据加密也能用于数字签名的算法。 RSA算法原理如下: 1.随机选择两个大...
一个密码学算法的课程设计 能实现对一个G的数据计算消息摘要
SHA加解密算法,SHA是安全散列算法,c语言实现的Benchmark
FIPS 180-2 散列算法SHA-224、SHA-256、SHA-384 和 SHA-512 的C语言快速软件实施
远程服务使用SSL证书链,该证书链已使用加密弱哈希算法(例如MD2、MD4、MD5或SHA1)签名。这些签名算法很容易受到碰撞攻击。攻击者可以利用这一点生成另一个具有相同数字签名的证书,从而允许攻击者伪装成受影响的服务...