javaMD5加密及登录验证(备忘)

MD5类

Java代码 复制代码
  1. package view.login.composer;   
  2.  import java.security.MessageDigest;     
  3.       
  4.  /**    
  5.   * 对密码进行加密和验证的类   
  6.   */     
  7.  public class CipherUtil{     
  8.           
  9.      private final static String[] hexDigits = {"0""1""2""3""4",     
  10.          "5""6""7""8""9""a""b""c""d""e""f"};     
  11.           
  12.      /** * 把inputString加密     */     
  13.      public static String generatePassword(String inputString){     
  14.          return encodeByMD5(inputString);     
  15.      }     
  16.           
  17.          
  18.      public static boolean validatePassword(String password, String inputString){     
  19.          if(password.equals(encodeByMD5(inputString))){     
  20.              return true;     
  21.          } else{     
  22.              return false;     
  23.          }     
  24.      }     
  25.      public static String returnEncodeByMde(String originString){   
  26.          return encodeByMD5(originString);   
  27.      }   
  28.      /**  对字符串进行MD5加密     */     
  29.      private static String encodeByMD5(String originString){     
  30.          if (originString != null){     
  31.              try{     
  32.                  MessageDigest md = MessageDigest.getInstance("MD5");     
  33.                  //使用指定的字节数组对摘要进行最后更新,然后完成摘要计算     
  34.                  byte[] results = md.digest(originString.getBytes());     
  35.                  //将得到的字节数组变成字符串返回     
  36.                  String resultString = byteArrayToHexString(results);     
  37.                  String pass =  resultString.toUpperCase();     
  38.                  return pass;   
  39.              } catch(Exception ex){     
  40.                  ex.printStackTrace();     
  41.              }     
  42.          }     
  43.          return null;     
  44.      }     
  45.           
  46.       
  47.      private static String byteArrayToHexString(byte[] b){     
  48.          StringBuffer resultSb = new StringBuffer();     
  49.          for (int i = 0; i < b.length; i++){     
  50.              resultSb.append(byteToHexString(b[i]));     
  51.          }     
  52.          return resultSb.toString();     
  53.      }     
  54.           
  55.      /** 将一个字节转化成十六进制形式的字符串     */     
  56.      private static String byteToHexString(byte b){     
  57.          int n = b;     
  58.          if (n < 0)     
  59.              n = 256 + n;     
  60.          int d1 = n / 16;     
  61.          int d2 = n % 16;     
  62.          return hexDigits[d1] + hexDigits[d2];     
  63.      }     
  64.         
  65.      public static void main(String[] args){   
  66.                   String pwd1="123";     
  67.                   String pwd2="";     
  68.                   CipherUtil cipher = new CipherUtil();     
  69.                   System.out.println("未加密的密码:"+pwd1);     
  70.                   //将123加密     
  71.                   pwd2 = cipher.generatePassword(pwd1);     
  72.                   System.out.println("加密后的密码:"+pwd2);     
  73.                        
  74.                   System.out.print("验证密码是否下确:");     
  75.                   if(cipher.validatePassword(pwd2, pwd1)) {     
  76.                       System.out.println("正确");     
  77.                   }     
  78.                   else {     
  79.                       System.out.println("错误");     
  80.                   }     
  81.      }   
  82.  }    


加密

Java代码 复制代码
  1. login.setPassword(CipherUtil.generatePassword(aduser1.getValue()));  


密码验证
//在用户表里查询出用户名和密码,并检验密码是否正确

Java代码 复制代码
  1. Login login = loginDAO.queryByUser(userName.getValue(),CipherUtil.returnEncodeByMde(password.getValue()) );  



Java代码 复制代码
  1. import java.security.*;   
  2.   
  3. public class Encrypter   
  4. {   
  5.     // 用MD5算法加密字符串   
  6.     public static String md5Encrypt(String s) throws Exception   
  7.     {   
  8.         //  获得支持MD5算法的MessageDigest   
  9.         MessageDigest md5 = MessageDigest.getInstance("MD5");   
  10.         //  获得BASE64Encoder对象,用Base64格式对字符串进行编码   
  11.         sun.misc.BASE64Encoder base64Encoder = new sun.misc.BASE64Encoder();   
  12.         // 对字符串进行加密,并将加密后的字符串按Base64格式进行编码,并将结果返回          
  13.         return base64Encoder.encode(md5.digest(s.getBytes("utf-8")));   
  14.     }   
  15.   
  16. }  

 

Java代码 复制代码
  1. String passwordMD5 = shopservlet.Encrypter.md5Encrypt(password);   
  2.                
  3.             //  定义插入记录的SQL语句   
  4.             String sql = "insert into t_users(user_name, password_md5, email) values(?, ?, ?)";   
  5.             //  执行SQL语句   
  6.             execSQL(sql, userName, passwordMD5, email);            
  7.             request.setAttribute("info""用户注册成功!");//  定义result.jsp中使用的消息  

你可能感兴趣的:(javaMD5加密及登录验证(备忘))