public class Reg {

 /**

  * @param args

  */

 public static void main(String[] args) {

  String aaString="haquanwen12";

  //密码复杂度校验判读是否有数字和字母组成

  if (getInvalue(aaString)) {

   System.out.println("密码有数字字母做成");

  }else {

   System.out.println("密码中不包括数字和字母");
  }

  //普通加密

  System.out.println("普通加密前的密码为:"+aaString);

  String ecoString=encodePwd(aaString);

  System.out.println("普通加密后的密码为:"+ecoString);

  System.out.println("普通再次加密:"+encodePwd(ecoString));

  //MD5加密

  System.out.println("MD5加密后的值为"+encrypt(aaString));

 }

 //密码加密函数,这个方法具有逆向性,及加密算法和解密算法相同的

 public static String encodePwd(String pwd){

  String encodeString="^&*^&687GIKUGUGBjhkjbhjk";

  String  reString="";

  if(pwd==null){

   pwd="";

  }

  for(int i=0;i<pwd.length();i++){

   reString=reString+(char)(pwd.charAt(i)^encodeString.charAt(i));

   

  }

  return reString;

  

 }

 

 //MD5加密

 public static byte[] encrypt(String msg)

 {

  try {

   //生成MessageDigest对象

   MessageDigest md5=MessageDigest.getInstance("MD5");

   byte[] srcBytes=msg.getBytes();

   //更新摘要

   md5.update(srcBytes);

   //完成hash计算。得到result

   byte[] resulBytes=md5.digest();

   return resulBytes;

  } catch (NoSuchAlgorithmException e) {

   // TODO: handle exception

   e.printStackTrace();

  }

  return null;

  

 }

 //密码复杂度校验

 /*    */    public static boolean getInvalue(String pw){

            for(int i=0;i<pw.length();i++){ 

              if(Character.isDigit(pw.charAt(i))&&Pattern.compile("(?i)[A-Za-z]").matcher(pw).find()){

         return true;

              }

           }

        return false;

 }
}