如何使用 java.security.MessageDigest 进行MD5和SHA的加密

发布时间:2018-03-25作者:laosun阅读(2047)

如何使用

java.security.MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 、SHA1、 SHA256、SHA384、SHA512算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。

    import java.security.MessageDigest;
    
    public class EncryptionUtils {
    
        public static String md5Encrypt(String srcStr) {
            return encrypt("MD5", srcStr);
        }
    
        public static String sha1Encrypt(String srcStr) {
            return encrypt("SHA-1", srcStr);
        }
    
        public static String sha256Encrypt(String srcStr) {
            return encrypt("SHA-256", srcStr);
        }
    
        public static String sha384Encrypt(String srcStr) {
            return encrypt("SHA-384", srcStr);
        }
    
        public static String sha512Encrypt(String srcStr) {
            return encrypt("SHA-512", srcStr);
        }
    
        public static String encrypt(String algorithm, String srcStr) {
            try {
                StringBuilder result = new StringBuilder();
                MessageDigest md = MessageDigest.getInstance(algorithm);
                byte[] bytes = md.digest(srcStr.getBytes("utf-8"));
                for (byte b : bytes) {
                    String hex = Integer.toHexString(b & 0xFF);
                    if (hex.length() == 1)
                        result.append("0");
                    result.append(hex);
                }
                return result.toString();
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
        
        public static void main(String[] args) {
            String str = "111111";
            System.out.println(md5Encrypt(str));
            System.out.println(sha1Encrypt(str));
            System.out.println(sha256Encrypt(str));
            System.out.println(sha384Encrypt(str));
            System.out.println(sha512Encrypt(str));
    //        打印结果:
    //        96e79218965eb72c92a549dd5a330112
    //        3d4f2bf07dc1be38b20cd6e46949a1071f9d0e3d
    //        bcb15f821479b4d5772bd0ca866c00ad5f926e3580720659cc80d39c9d09802a
    //        1b0268a40ae44c012946c974d60bf5291e7bb7c63cdb72a904d9283e3dc0a34de9afebe4035665768aaa503a4e7a30c3
    //        b0412597dcea813655574dc54a5b74967cf85317f0332a2591be7953a016f8de56200eb37d5ba593b1e4aa27cea5ca27100f94dccd5b04bae5cadd4454dba67d
        }
        
    }


0 +1

版权声明

 Java  源码

 请文明留言

0 条评论