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.  }    
package view.login.composer;
 import java.security.MessageDigest;  
   
 /**  
  * 对密码进行加密和验证的类 
  */  
 public class CipherUtil{  
       
     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 generatePassword(String inputString){  
         return encodeByMD5(inputString);  
     }  
       
      
     public static boolean validatePassword(String password, String inputString){  
         if(password.equals(encodeByMD5(inputString))){  
             return true;  
         } else{  
             return false;  
         }  
     }  
     public static String returnEncodeByMde(String originString){
    	 return encodeByMD5(originString);
     }
     /**  对字符串进行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);  
                 String pass =  resultString.toUpperCase();  
                 return pass;
             } catch(Exception ex){  
                 ex.printStackTrace();  
             }  
         }  
         return null;  
     }  
       
   
     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 pwd1="123";  
    	          String pwd2="";  
    	          CipherUtil cipher = new CipherUtil();  
    	          System.out.println("未加密的密码:"+pwd1);  
    	          //将123加密  
    	          pwd2 = cipher.generatePassword(pwd1);  
    	          System.out.println("加密后的密码:"+pwd2);  
    	            
    	          System.out.print("验证密码是否下确:");  
    	          if(cipher.validatePassword(pwd2, pwd1)) {  
    	              System.out.println("正确");  
    	          }  
    	          else {  
    	              System.out.println("错误");  
    	          }  
     }
 }  


加密

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


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

Java代码 复制代码
  1. Login login = loginDAO.queryByUser(userName.getValue(),CipherUtil.returnEncodeByMde(password.getValue()) );  
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. }  
import java.security.*;

public class Encrypter
{
	// 用MD5算法加密字符串
	public static String md5Encrypt(String s) throws Exception
	{
		//  获得支持MD5算法的MessageDigest
		MessageDigest md5 = MessageDigest.getInstance("MD5");
        //  获得BASE64Encoder对象,用Base64格式对字符串进行编码
		sun.misc.BASE64Encoder base64Encoder = new sun.misc.BASE64Encoder();
		// 对字符串进行加密,并将加密后的字符串按Base64格式进行编码,并将结果返回		
		return base64Encoder.encode(md5.digest(s.getBytes("utf-8")));
	}

}

 

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中使用的消息  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值