信息加密之消息摘要算法的SHA

jopen 9年前發布 | 11K 次閱讀 加密 安全相關

SHA是消息摘要算法的一種實現方式,前面已經總結過MD2\4\5的實現,接下來就為大家總結一下SHA的實現。

SHA的jdk實現:

private static void SHA_JDK(){
        try {
            MessageDigest digest = MessageDigest.getInstance("SHA");//我們可以通過SHA\SHA-1\SHA-384\SHA-256\SHA-512來獲得不同的消息摘要密鑰
            digest.update(src.getBytes());
            System.out.println("SHA :"+Hex.encodeHexString(digest.digest()));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }

SHA的BC實現:

private static void SHA_BC(){
  Digest digest = new SHA1Digest();
  digest.update(src.getBytes(), 0, src.getBytes().length);
  byte[] shaByte = new byte[digest.getDigestSize()];
  digest.doFinal(shaByte, 0);
  System.out.println("shaByte : "+Hex.encodeHexString(shaByte));
}

對于SHA224,JAVA jdk并沒有提供實現,下面是利用BC實現的方法:

private static void SHA224_BC(){
  Digest digest = new SHA224Digest();
  digest.update(src.getBytes(), 0, src.getBytes().length);
  byte[] sha224Byte = new byte[digest.getDigestSize()];
  digest.doFinal(sha224Byte, 0);
  System.out.println("sha224Byte : "+Hex.encodeHexString(sha224Byte));
}

對于SHA224還有一種類似JDK的實現方法:

private static void SHA224_BC_JDK(){
  Security.addProvider(new BouncyCastleProvider());
  try {
    MessageDigest digest = MessageDigest.getInstance("SHA-224");
    digest.update(src.getBytes());
    System.out.println("SHA224_BC_JDK :"+Hex.encodeHexString(digest.digest()));
  } catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
  }
}

最后簡單介紹一下CC的SHA實現:

private static void SHA_CC_Byte(){
    System.out.println("SHA_CC_Byte_SHA1 : "+DigestUtils.sha1Hex(src.getBytes()));
    System.out.println("SHA_CC_Byte_SHA256 : "+DigestUtils.sha256Hex(src.getBytes()));
    System.out.println("SHA_CC_Byte_SHA384 : "+DigestUtils.sha384Hex(src.getBytes()));
    System.out.println("SHA_CC_Byte_SHA512 : "+DigestUtils.sha512Hex(src.getBytes()));
  }

  private static void SHA_CC(){
    System.out.println("SHA_CC_SHA1 : "+DigestUtils.sha1Hex(src));
    System.out.println("SHA_CC_SHA256 : "+DigestUtils.sha256Hex(src));
    System.out.println("SHA_CC_SHA384 : "+DigestUtils.sha384Hex(src));
    System.out.println("SHA_CC_SHA512 : "+DigestUtils.sha512Hex(src));
  }

到這里SHA的實現總結完畢。

來自:http://www.cnblogs.com/AndroidJotting/p/4284964.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!