原视频地址
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类结束