原视频地址 Imooc_Java实现消息摘要算法加密_3-2SHA算法实现
package SHA; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.Security; import org.apache.commons.codec.binary.Hex; 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; public class SHA { private static String src = "imooc security sha"; public static void main(String[] args) { jdkSHA1(); bcSHA1(); bcSHA224(); bcSHA224_2(); ccSHA1(); }//main方法结束 public static void jdkSHA1(){ //MessageDigest 直接调用静态方法getInstance 指定md是SHA(既是SHA1)算法的执行者 try { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(src.getBytes()); String res = Hex.encodeHexString(md.digest()); System.out.println("jdkSHA1:"+res); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } }//jdkSHA1()方法结束 public static void bcSHA1(){ Digest digest = new SHA1Digest(); digest.update(src.getBytes(), 0, src.getBytes().length); //byte[]数组接收结果 byte[] sha1Bytes = new byte[digest.getDigestSize()]; digest.doFinal(sha1Bytes, 0);//偏移量为0即是完整的输出 System.out.println("bcSHA1:"+org.bouncycastle.util.encoders.Hex.toHexString(sha1Bytes)); }//bcSHA1()方法结束 public static void bcSHA224(){ Digest digest = new SHA224Digest(); digest.update(src.getBytes(), 0, src.getBytes().length); byte[] sha224Bytes = new byte[digest.getDigestSize()]; //将摘要结果输出到输出数组里 digest.doFinal(sha224Bytes, 0); System.out.println("bcSHA224:"+org.bouncycastle.util.encoders.Hex.toHexString(sha224Bytes)); }//bcSHA224()方法结束 public static void bcSHA224_2(){ Security.addProvider(new BouncyCastleProvider()); //练习内容 } public static void ccSHA1(){ //第一种方式 // DigestUtils.sha1Hex(src.getBytes());//DigestUtils.sha1Hex(byte[] data) System.out.println("ccSHA1 - 1:" + DigestUtils.sha1Hex(src.getBytes())); //第二种方式 // DigestUtils.sha1Hex(src);//DigestUtils.sha1Hex(String data) System.out.println("ccSHA1 - 2:" + DigestUtils.sha1Hex(src)); }//ccSHA1()方法结束 }//SHA类结束