zoukankan      html  css  js  c++  java
  • java工具类3-签名加密

    import java.security.MessageDigest;
    
    import javax.crypto.Mac;
    import javax.crypto.spec.SecretKeySpec;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import com.dms.common.constant.CommonConstants;
    
    /**
     * 签名加密工具类<br/>
     * Date: 2018年<br/>
     * 
     * @version
     * @see
     */
    public class SignUtils {
        private static final Logger LOG = LoggerFactory.getLogger(SignUtils.class);
        //private static final String DEFAULT_CHARSET = "UTF-8";
        private static final char[] DIGITS;
    
        public static String hmacSha256(String key, String data) {
            try {
                Mac mac = Mac.getInstance("HmacSHA256");
                SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), mac.getAlgorithm());
                mac.init(signingKey);
                return encodeHex(mac.doFinal(data.getBytes()));
            } catch (Exception e) {
                LOG.error("execute hmacSHA256 error",e);
            }
    
            return null;
        }
    
        public static String md5(String data, String charset) {
            try {
                byte[] msg = data.getBytes(charset);
                MessageDigest md = MessageDigest.getInstance("MD5");
                return encodeHex(md.digest(msg));
            } catch (Exception e) {
                LOG.error("execute MD5 error",e);
            } 
            return null;
        }
    
        public static String sha256(String data, String charset) {
            try {
                byte[] msg = data.getBytes(charset);
                MessageDigest md = MessageDigest.getInstance("SHA-256");
                return encodeHex(md.digest(msg));
            } catch (Exception e) {
                LOG.error("execute SHA-256 error",e);
            } 
            return null;
        }
    
        public static String sha1(String data, String charset) {
            try {
                byte[] msg = data.getBytes(charset);
                MessageDigest md = MessageDigest.getInstance("SHA1");
                return encodeHex(md.digest(msg));
            } catch (Exception e) {
                LOG.error("execute SHA1 error",e);
            } 
            return null;
        }
    
        public static String sha1(String data) {
            return sha1(data, CommonConstants.DEFAULT_CHARSET);
        }
    
        private static String encodeHex(byte[] data) {
            int l = data.length;
            char[] out = new char[l << 1];
            int i = 0;
    
            for (int j = 0; i < l; ++i) {
                out[j++] = DIGITS[(240 & data[i]) >>> 4];
                out[j++] = DIGITS[15 & data[i]];
            }
    
            return new String(out);
        }
    
        static {
            DIGITS =
                    new char[] {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd',
                            'e', 'f'};
        }
    }
  • 相关阅读:
    初试ASP.NET Web API/MVC API(附Demo)
    IP网络,光网络以及轨道交通的快速卸载随想
    解决Cocos2d-x3.0、3.1 &quot;_opendir$INODE64&quot;symbol(s) not found错误
    C strlen vs sizeof
    xUtils工具实现下载功能
    使用 PHPMailer 发送邮件
    自己定义TextView 调用ttf格式字体
    POJ
    C#实现麦克风採集与播放
    用程序来控制一个网页,实现自己主动输入等操作
  • 原文地址:https://www.cnblogs.com/chong-zuo3322/p/12855036.html
Copyright © 2011-2022 走看看