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安全散列算法
猜你喜欢
转载自zhizhi555555.iteye.com/blog/2222706
今日推荐
周排行