Utils:Java自带消息摘要实现SHA加密

star2017 1年前 ⋅ 443 阅读

项目对外提供接口时都会要求调用方根据服务器制定的加密规则传入签名字符串,再进行校验来判断请求来源的合法性,而SHA加密是比较常用的方法。

import java.security.MessageDigest;

public class SHAEncryptUtil {

    public final String SHA256 = "SHA-256";
    public final String SHA512 = "SHA-512";

    /**
     * SHA256加密
     * @param str 需要加密的内容
     * @return String
     */
    public String getSHA256Str(String str) {
        return encryptSHA(str, SHA256);
    }

    /**
     * SHA512加密
     * @param str 需要加密的内容
     * @return String
     */
    public String getSHA512Str(String str) {
        return encryptSHA(str, SHA512);
    }

    /**
     * SHA加密方法
     * @param str 需要加密字符内容
     * @param encType 加密类型
     * @return
     */
    private String encryptSHA(String str, String encType) {
        String encryptStr = null;

        try {
            // 创建加密对象,传入加密类型
            MessageDigest messageDigest = MessageDigest.getInstance(encType);
            // 传入加密字符串
            messageDigest.update(str.getBytes("UTF-8"));
            byte[] bytes = messageDigest.digest();

            StringBuffer strBufferHex = new StringBuffer();
            for (int i = 0; i < bytes.length; i++) {
                // byte转16进制
                String hexStr = Integer.toHexString(bytes[i] & 0xFF);
                if (hexStr.length() == 1) {
                    strBufferHex.append("0");
                }
                strBufferHex.append(hexStr);
            }

            encryptStr = strBufferHex.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return encryptStr;
    }
}
更多内容请访问:IT源点

相关文章推荐

全部评论: 0

    我有话说: