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(安全散列算法) #### 一、概述 安全散列算法(Secure Hash Algorithm,简称SHA)是一种广泛应用于信息安全领域的数据加密算法。它最初由美国国家标准与技术局(National Institute of Standards and ...
SHA是一种数据加密算法,该算法经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)...
对于SHA安全散列算法,以前没怎么使用过,仅仅是停留在听说过的阶段,今天在看图片缓存框架Glide源码时发现其缓存的Key采用的不是MD5加密算法,而是SHA-256加密算法,这才勾起了我的好奇心,所以趁着晚上没啥事,来...
安全散列算法SHA,全称为Secure Hash Algorithm,是一种广泛用于数据完整性验证和数字签名的密码学算法。SHA家族包括SHA-0、SHA-1、SHA-2和SHA-3等多个版本,每个版本都有不同的安全性和性能特点。在这个压缩包文件...
SHA散列算法,可以非常方便的家密码散列成16进制数据。
散列算法,全称为哈希算法,是一种在计算领域中广泛应用的数据摘要技术。SHA-1(Secure Hash Algorithm 1)是其中的一种,...通过阅读和理解SHA-1的C代码,你可以深入了解其内部机制,并且能够自行实现或改进散列算法。
SHA2散列算法,全称为Secure Hash Algorithm 2,是一组用于数字签名、消息认证码(MAC)和数据完整性检查的密码学哈希函数。它包括SHA-224、SHA-256、SHA-384和SHA-512四种不同长度的哈希函数,提供不同级别的安全性...
MD5,SHA算法的实现与比较(C#) MD5,SHA算法的实现与比较(C#)
SHA-1散列算法是密码学中的一种重要算法,它被广泛用于数据完整性验证和数字签名。...同时,了解SHA-1也有助于后续学习更高级的散列算法,如SHA-256或SHA-3,这些都是网络安全和区块链等领域的重要基础。
### 安全散列算法SHA-1详细介绍 #### 一、SHA及SHA-1概述 1993年,美国国家标准局(NIST)公布了安全散列算法SHA,并将其列为联邦信息处理标准(FIPS 180 Secure Hash Standard, SHS)。此标准规定必须采用SHS来进行...
安全散列算法SHA(Secure Hash Algorithm),如SHA-1,是一种广泛使用的散列函数,它能够对长度不超过2^64位的消息产生160位的消息摘要输出。SHA-1算法是由美国国家标准与技术研究院(NIST)发布的国家标准FIPS PUB ...
SHA-1是美国国家安全局(NSA)设计的一种安全散列算法,被广泛应用于各种场景中,如数字签名、数据完整性验证等。该算法能够接受任何长度的消息输入,并生成一个固定长度(160位或20字节)的消息摘要。这个摘要通常...
安全散列算法(SHA-1)是一种常用的密码散列函数,属于安全散列算法系列中的一员,它被广泛应用于信息安全领域,如数据完整性验证、数字签名等场景中。SHA-1算法由美国国家安全局(NSA)设计,并由美国国家标准与...
- **SHA**(Secure Hash Algorithm)系列:包括SHA-1、SHA-256、SHA-384、SHA-512等,是由美国国家安全局(NSA)设计的一系列散列算法。 - SHA-1输出160位散列值,曾经广泛应用,但现在已被认为不够安全。 - SHA-...
描述中提到的"SHA-224、SHA-256、SHA-384 和 SHA-512"是FIPS 180-2中定义的一组安全散列算法,统称为SHA-2(Secure Hash Algorithm 2)。这些算法分别产生224、256、384和512位的散列值,它们比SHA-1更加强壮,因为...
SHA-1散列算法是一种广泛应用于信息安全领域的密码学散列函数,由美国国家安全局(NSA)设计,并在1995年由美国国家标准与技术研究所(NIST)发布为标准。该算法主要用于验证数据完整性,比如文件校验、数字签名等...
SHA (Secure Hash Algorithm,译作安全散列算法) 的完整C语言代码。
散列算法,也被称为哈希算法,是一种在计算领域中广泛应用的技术,主要用于数据验证、存储索引和加密等场景。本资源包含六种常见的散列算法的...在实际开发中,应当优先考虑使用更为安全的现代散列算法,如SHA-3系列。
SHA,即安全散列算法,是由美国国家安全局(NSA)设计,并由美国国家标准与技术研究院(NIST)发布的系列密码散列函数。这个算法家族包括SHA-0、SHA-1以及SHA-2系列(SHA-224、SHA-256、SHA-384、SHA-512)。SHA-0是...