Java SHA-256加密的两种实现方法详解

利用Apache的工具类实现加密,使用commons-codec包中的DigestUtils算法工具类(入参支持字符串、字节数组、文件流等)

maven:

1

2

3

4

5

<dependency>

 <groupId>commons-codecgroupId>

 <artifactId>commons-codecartifactId>

 <version>${common-codec.version}version>

dependency>

实现代码:

import java.security.MessageDigest;
import java.security.Security;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.util.encoders.Hex;
import org.apache.commons.codec.digest.DigestUtils;
 
public abstract class SHACoder {
 
    /**
     * SHA加密
     * 
     * @param data 待加密数据
     * @return byte[] 消息摘要
     * @throws Exception
     */
    public static byte[] encodeSHA(String data) throws Exception {
 
        // 执行消息摘要
        return DigestUtils.sha(data);
    }
 
    /**
     * SHAHex加密
     * 
     * @param data 待加密数据
     * @return String 消息摘要
     * @throws Exception
     */
    public static String encodeSHAHex(String data) throws Exception {
 
        // 执行消息摘要
        return DigestUtils.shaHex(data);
    }
 
    /**
     * SHA-224加密
     * 
     * @param data
     *            待加密数据
     * @return byte[] 消息摘要
     * 
     * @throws Exception
     */
    public static byte[] encodeSHA224(byte[] data) throws Exception {
        // 加入BouncyCastleProvider支持
        Security.addProvider(new BouncyCastleProvider());
 
        // 初始化MessageDigest
        MessageDigest md = MessageDigest.getInstance("SHA-224");
 
        // 执行消息摘要
        return md.digest(data);
    }
 
    /**
     * SHA-224加密
     * 
     * @param data
     *            待加密数据
     * @return byte[] 消息摘要
     * @throws Exception
     */
    public static String encodeSHA224Hex(byte[] data) throws Exception {
 
        // 执行消息摘要
        byte[] b = encodeSHA224(data);
 
        // 做十六进制编码处理
        return new String(Hex.encode(b));
 
    }
 
    /**
     * SHA256加密
     * 
     * @param data 待加密数据
     * @return byte[] 消息摘要
     * @throws Exception
     */
    public static byte[] encodeSHA256(String data) throws Exception {
 
        // 执行消息摘要
        return DigestUtils.sha256(data);
    }
 
    /**
     * SHA256Hex加密
     * 
     * @param data 待加密数据
     * @return String 消息摘要
     * @throws Exception
     */
    public static String encodeSHA256Hex(String data) throws Exception {
 
        // 执行消息摘要
        return DigestUtils.sha256Hex(data);
    }
 
    /**
     * SHA384加密
     * 
     * @param data 待加密数据
     * @return byte[] 消息摘要 
     * @throws Exception
     */
    public static byte[] encodeSHA384(String data) throws Exception {
 
        // 执行消息摘要
        return DigestUtils.sha384(data);
    }
 
    /**
     * SHA384Hex加密
     * 
     * @param data 待加密数据
     * @return String 消息摘要 
     * @throws Exception
     */
    public static String encodeSHA384Hex(String data) throws Exception {
 
        // 执行消息摘要
        return DigestUtils.sha384Hex(data);
    }
 
    /**
     * SHA512Hex加密
     * 
     * @param data 待加密数据
     * @return byte[] 消息摘要
     * @throws Exception
     */
    public static byte[] encodeSHA512(String data) throws Exception {
 
        // 执行消息摘要
        return DigestUtils.sha512(data);
    }
 
    /**
     * SHA512Hex加密
     * 
     * @param data 待加密数据
     * @return String 消息摘要
     * @throws Exception
     */
    public static String encodeSHA512Hex(String data) throws Exception {
 
        // 执行消息摘要
        return DigestUtils.sha512Hex(data);
    }
 
}

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中实现SHA1与MD5加密算法的基本方法
  • Java实现SHA算法的方法详解
  • java 中Excel转shape file的实例详解
  • java中加密的实现方法(MD5,MD2,SHA)
  • java算法导论之FloydWarshall算法实现代码
  • java 中使用maven shade plugin 打可执行Jar包
  • Java 详解单向加密--MD5、SHA和HMAC及简单实现实例
  • Java用GDAL读写shapefile的方法示例
  • Java实现常用加密算法——单向加密算法MD5和SHA
  • Java实现SHA-1算法实例
  • Java实现SHA1加密代码实例

你可能感兴趣的:(算法)