• SHA1加密算法


    SHA-1是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段密文。

    SHA-1 与 MD5 的比较

     对密码分析的安全性:由于MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击。

    速度:在相同的硬件上,SHA-1 的运行速度比 MD5 慢。

    SignUtil.sha1(password)  对密码进行sha1加密

    public class SignUtil {
        private static final Logger LOG = LoggerFactory.getLogger(SignUtil.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, 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'};
        }
    }
  • 相关阅读:
    EV3-一种多米诺骨牌搭建机
    UART 通用异步传输器
    用Python进行EV3编程
    vectorized case sum
    Profile your program using GNU gprof
    Usage of the const keyword in C++
    Principles about returning a large data chunk from a function
    [cf1361E]James and the Chase
    [cf1444D]Rectangular Polyline
    [atAGC043B]123 Triangle
  • 原文地址:https://www.cnblogs.com/chong-zuo3322/p/12255817.html
Copyright © 2020-2023  润新知