美文网首页
手写一个加密类-基于MD5

手写一个加密类-基于MD5

作者: ssttIsme | 来源:发表于2019-10-06 17:06 被阅读0次
    package demo;
    
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.util.Arrays;
    
    public class MD5Digest {
        public static String digest(String message){
            try {
                MessageDigest md=MessageDigest.getInstance("MD5");
                //加密后返回新的数组
                byte[] buf=md.digest(message.getBytes());
                //加密后返回128位的数据 16字节*8=128位
                System.out.println("原始二进制密文:"+Arrays.toString(buf)+" 长度"+buf.length);
                //转换后返回16进制的数据  一个字节2个16进制的数据
                StringBuilder sb=new StringBuilder();
                for(int i=0;i<buf.length;i++){
                    String hexStr=Integer.toHexString(buf[i]&0xFF);//返回32位的数据
                    if(hexStr.length()==1){
                        hexStr="0"+hexStr;
                    }
                    sb.append(hexStr);
                }
                String fianlStr=sb.toString();
                System.out.print("转为16进制的密文:"+fianlStr+" 长度"+fianlStr.length());
                return fianlStr;
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
            return null;
            
            
        }
        public static void main(String[] args) {
            digest("123");
            System.out.println();
            digest("123456");
        }
    }
    
    原始二进制密文:[32, 44, -71, 98, -84, 89, 7, 91, -106, 75, 7, 21, 45, 35, 75, 112] 长度16
    转为16进制的密文:202cb962ac59075b964b07152d234b70 长度32
    原始二进制密文:[-31, 10, -36, 57, 73, -70, 89, -85, -66, 86, -32, 87, -14, 15, -120, 62] 长度16
    转为16进制的密文:e10adc3949ba59abbe56e057f20f883e 长度32
    

    相关文章

      网友评论

          本文标题:手写一个加密类-基于MD5

          本文链接:https://www.haomeiwen.com/subject/htiupctx.html