Java实现SHA算法的方法详解
一 简介
安全散列算法
固定长度摘要信息
二 SHA算法
SHA-1、SHA-2(SHA-224、SHA-256、SHA384、SHA-512)
三 SHA算法实现
package com.imooc.security.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 ImoocSHA { private static String src = "cakin24 security sha"; public static void main(String[] args) { jdkSHA1(); bcSHA1(); bcSHA224(); ccSHA1(); } public static void jdkSHA1() { try { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(src.getBytes()); System.out.println("jdk sha-1 : " + Hex.encodeHexString(md.digest())); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } public static void bcSHA1() { Digest digest = new SHA1Digest(); digest.update(src.getBytes(), 0, src.getBytes().length); byte[] sha1Bytes = new byte[digest.getDigestSize()]; digest.doFinal(sha1Bytes, 0); System.out.println("bc sha-1 : " + org.bouncycastle.util.encoders.Hex.toHexString(sha1Bytes)); } 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("bc sha-224 : " + org.bouncycastle.util.encoders.Hex.toHexString(sha224Bytes)); } public static void ccSHA1() { System.out.println("cc sha1 - 1 :" + DigestUtils.sha1Hex(src.getBytes())); System.out.println("cc sha1 - 2 :" + DigestUtils.sha1Hex(src)); } //384、256、512。。。。。。 }
四 运行结果
jdk sha-1 : ba28a0f5f08efc8afaee4706ffd496e1f88befdb
bc sha-1 : ba28a0f5f08efc8afaee4706ffd496e1f88befdb
bc sha-224 : ae3b58439cd53d28455781fe6dc20c83a45d63e1d9550330c7911f58
cc sha1 - 1 :ba28a0f5f08efc8afaee4706ffd496e1f88befdb
cc sha1 - 2 :ba28a0f5f08efc8afaee4706ffd496e1f88befdb
五 SHA算法应用
PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:
在线SHA1加密工具:
http://tools.jb51.net/password/sha1encode
文字在线加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode
在线散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt
在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha
在线sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode
更多关于java相关内容感兴趣的读者可查看本站专题:《Java数学运算技巧总结》、《Java数据结构与算法教程》、《Java字符与字符串操作技巧总结》、《Java操作DOM节点技巧总结》和《Java数组操作技巧总结》
希望本文所述对大家java程序设计有所帮助。
您可能感兴趣的文章:
- JAVA多线程——多线程的几种实现方法详解
- Java程序中添加播放MIDI音乐功能的实现方法详解
- 【JAVA】java中实现map集合的数据存取详解三种方法。Android程序员也是要会写的
- [置顶] 【JAVA】java中实现map集合的数据存取详解三种方法。Android程序员也是要会写的
- Java8的HashMap详解(存储结构,功能实现,扩容优化,线程安全,遍历方法)
- java实现单链表中是否有环的方法详解
- 举例详解用Java实现web分页功能的方法
- Java调用微信客服消息实现发货通知的方法详解
- Java贪心算法之Prime算法原理与实现方法详解
- 详解Kotlin中如何实现类似Java或C#中的静态方法
- 详解Java注解的实现与使用方法
- Java使用JDBC实现Oracle用户认证的方法详解
- 详解JAVA生成将图片存入数据库的sql语句实现方法
- 基于序列化存取实现java对象深度克隆的方法详解
- Java SHA-256加密的两种实现方法详解
- 详解Java中实现SHA1与MD5加密算法的基本方法
- Java中的递归详解及实现方法
- 详解Java中使用泛型实现快速排序算法的方法
- java 验证用户是否已经登录与实现自动登录方法详解