原視頻地址
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類結束