• java md5 3


    import java.security.*;
    public class MD5{

        //十六进制下数字到字符的映射数组 
        private final static String[] hexDigits =

    {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};


    /**把inputString加密*/ 
    public static String md5(String inputString){ 
    return encodeByMD5(inputString); 
    }

    /** 
    * 验证输入的密码是否正确 
    * @param password 真正的密码(加密后的真密码) 
    * @param inputString 输入的字符串 
    * @return 验证结果,boolean类型 
    */ 
    public static boolean compare(String md5Str,String inputString){ 
    if(md5Str.equals(encodeByMD5(inputString))){ 
    return true; 
    }else{ 
    return false; 

    }

    /**对字符串进行MD5编码*/ 
    private static String encodeByMD5(String originString){ 
        if(originString != null){ 
        try{ 
        //创建具有指定算法名称的信息摘要 
        MessageDigest md = MessageDigest.getInstance("MD5"); 
        //使用指定的字节数组对摘要进行最后更新,然后完成摘要计算 
        byte[] results = md.digest(originString.getBytes()); 
        //将得到的字节数组变成字符串返回 
        String resultString = byteArrayToHexString(results); 
        return resultString.toUpperCase(); 
        }catch(Exception ex){ 
            ex.printStackTrace(); 
           } 
        } 
          return null; 
    }

    /** 
    * 轮换字节数组为十六进制字符串 
    * @param b 字节数组 
    * @return 十六进制字符串 
    */ 
    private static String byteArrayToHexString(byte[] b){ 
    StringBuffer resultSb = new StringBuffer(); 
    for(int i=0;i<b.length;i++){
    resultSb.append(byteToHexString(b[i])); 

    return resultSb.toString(); 
    }

    /** 
    * 将一个字节转化成十六进制形式的字符串 
    */ 
    private static String byteToHexString(byte b){ 
    int n = b; 
    if(n<0) 
    n=256+n; 
    int d1 = n/16; 
    int d2 = n%16; 
    return hexDigits[d1] + hexDigits[d2]; 
    }

    public static void main(String[] args){ 
    String password = MD5.md5("admin"); 
    System.out.println("对admin用MD5摘要后的字符串:"+password); 
    String inputString = "tianshi0253"; 
    System.out.println("tianshi0253与密码匹配?"+MD5.compare(password, inputString)); 
    inputString = "admin"; 
    System.out.println("admin与密码匹配?"+MD5.compare(password, inputString)); 
    }

    }

  • 相关阅读:
    未来简史之数据主义(Dataism)
    10分钟看懂《人类简史》和《未来简史》
    SignalR来做实时Web聊天
    .Net Core应用搭建的分布式邮件系统设计
    AspNetCore-MVC实战系列(四)之结尾
    AspNetCore-MVC实战系列(三)之个人中心
    AspNetCore-MVC实战系列(二)之通过绑定邮箱找回密码
    AspNetCore
    爱留图
    .NetCore上传多文件的几种示例
  • 原文地址:https://www.cnblogs.com/youxin/p/2243574.html
Copyright © 2020-2023  润新知