久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

PwdUtil.java 密碼加密

 quasiceo 2014-09-12
分類: java 工具 2013-05-10 13:54 139人閱讀 評論(0) 收藏 舉報
  1. import java.security.MessageDigest;  
  2.   
  3. public class PwdUtil {  
  4.     public static String MD5(String inStr) {  
  5.         MessageDigest md5 = null;  
  6.         try {  
  7.             md5 = MessageDigest.getInstance("MD5");  
  8.         } catch (Exception e) {  
  9.             System.out.println(e.toString());  
  10.             e.printStackTrace();  
  11.             return "";  
  12.         }  
  13.         char[] charArray = inStr.toCharArray();  
  14.         byte[] byteArray = new byte[charArray.length];  
  15.   
  16.         for (int i = 0; i < charArray.length; ++i) {  
  17.             byteArray[i] = (byte) charArray[i];  
  18.         }  
  19.         byte[] md5Bytes = md5.digest(byteArray);  
  20.   
  21.         StringBuffer hexValue = new StringBuffer();  
  22.   
  23.         for (int i = 0; i < md5Bytes.length; ++i) {  
  24.             int val = md5Bytes[i] & 0xFF;  
  25.             if (val < 16)  
  26.                 hexValue.append("0");  
  27.             hexValue.append(Integer.toHexString(val));  
  28.         }  
  29.   
  30.         return hexValue.toString();  
  31.     }  
  32.   
  33.     public static String encrypt(String inStr) {  
  34.         char[] a = inStr.toCharArray();  
  35.         for (int i = 0; i < a.length; ++i) {  
  36.             a[i] = (char) (a[i] ^ 0x74);  
  37.         }  
  38.         String s = new String(a);  
  39.         return s;  
  40.     }  
  41.   
  42.     public static String decrypt(String inStr) {  
  43.         char[] a = inStr.toCharArray();  
  44.         for (int i = 0; i < a.length; ++i) {  
  45.             a[i] = (char) (a[i] ^ 0x74);  
  46.         }  
  47.         String k = new String(a);  
  48.         return k;  
  49.     }  
  50. }  


 

 

 

 

另一個加密工具

  1. import java.security.Key;  
  2. import java.security.SecureRandom;  
  3. import javax.crypto.Cipher;  
  4. import javax.crypto.SecretKey;  
  5. import javax.crypto.SecretKeyFactory;  
  6. import javax.crypto.spec.PBEKeySpec;  
  7. import javax.crypto.spec.PBEParameterSpec;  
  8. public class PasswordUtil {  
  9.   
  10.     /** 
  11.      * JAVA6支持以下任意一種算法 PBEWITHMD5ANDDES PBEWITHMD5ANDTRIPLEDES 
  12.      * PBEWITHSHAANDDESEDE PBEWITHSHA1ANDRC2_40 PBKDF2WITHHMACSHA1 
  13.      * */  
  14.   
  15.     /** 
  16.      * 定義使用的算法為:PBEWITHMD5andDES算法 
  17.      */  
  18.     public static final String ALGORITHM = "PBEWithMD5AndDES";//加密算法  
  19.     public static final String Salt = "63293188";//密鑰  
  20.   
  21.     /** 
  22.      * 定義迭代次數為1000次 
  23.      */  
  24.     private static final int ITERATIONCOUNT = 1000;  
  25.   
  26.     /** 
  27.      * 獲取加密算法中使用的鹽值,解密中使用的鹽值必須與加密中使用的相同才能完成操作. 鹽長度必須為8字節(jié) 
  28.      *  
  29.      * @return byte[] 鹽值 
  30.      * */  
  31.     public static byte[] getSalt() throws Exception {  
  32.         // 實例化安全隨機數  
  33.         SecureRandom random = new SecureRandom();  
  34.         // 產出鹽  
  35.         return random.generateSeed(8);  
  36.     }  
  37.   
  38.     public static byte[] getStaticSalt() {  
  39.         // 產出鹽  
  40.         return Salt.getBytes();  
  41.     }  
  42.   
  43.     /** 
  44.      * 根據PBE密碼生成一把密鑰 
  45.      *  
  46.      * @param password 
  47.      *            生成密鑰時所使用的密碼 
  48.      * @return Key PBE算法密鑰 
  49.      * */  
  50.     private static Key getPBEKey(String password) {  
  51.         // 實例化使用的算法  
  52.         SecretKeyFactory keyFactory;  
  53.         SecretKey secretKey = null;  
  54.         try {  
  55.             keyFactory = SecretKeyFactory.getInstance(ALGORITHM);  
  56.             // 設置PBE密鑰參數  
  57.             PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray());  
  58.             // 生成密鑰  
  59.             secretKey = keyFactory.generateSecret(keySpec);  
  60.         } catch (Exception e) {  
  61.             // TODO Auto-generated catch block  
  62.             e.printStackTrace();  
  63.         }  
  64.   
  65.         return secretKey;  
  66.     }  
  67.   
  68.     /** 
  69.      * 加密明文字符串 
  70.      *  
  71.      * @param plaintext 
  72.      *            待加密的明文字符串 
  73.      * @param password 
  74.      *            生成密鑰時所使用的密碼 
  75.      * @param salt 
  76.      *            鹽值 
  77.      * @return 加密后的密文字符串 
  78.      * @throws Exception 
  79.      */  
  80.     public static String encrypt(String plaintext, String password, byte[] salt) {  
  81.   
  82.         Key key = getPBEKey(password);  
  83.         byte[] encipheredData = null;  
  84.         PBEParameterSpec parameterSpec = new PBEParameterSpec(salt, ITERATIONCOUNT);  
  85.         try {  
  86.             Cipher cipher = Cipher.getInstance(ALGORITHM);  
  87.   
  88.             cipher.init(Cipher.ENCRYPT_MODE, key, parameterSpec);  
  89.   
  90.             encipheredData = cipher.doFinal(plaintext.getBytes());  
  91.         } catch (Exception e) {  
  92.         }  
  93.         return bytesToHexString(encipheredData);  
  94.     }  
  95.   
  96.     /** 
  97.      * 解密密文字符串 
  98.      *  
  99.      * @param ciphertext 
  100.      *            待解密的密文字符串 
  101.      * @param password 
  102.      *            生成密鑰時所使用的密碼(如需解密,該參數需要與加密時使用的一致) 
  103.      * @param salt 
  104.      *            鹽值(如需解密,該參數需要與加密時使用的一致) 
  105.      * @return 解密后的明文字符串 
  106.      * @throws Exception 
  107.      */  
  108.     public static String decrypt(String ciphertext, String password, byte[] salt) {  
  109.   
  110.         Key key = getPBEKey(password);  
  111.         byte[] passDec = null;  
  112.         PBEParameterSpec parameterSpec = new PBEParameterSpec(getStaticSalt(), ITERATIONCOUNT);  
  113.         try {  
  114.             Cipher cipher = Cipher.getInstance(ALGORITHM);  
  115.   
  116.             cipher.init(Cipher.DECRYPT_MODE, key, parameterSpec);  
  117.   
  118.             passDec = cipher.doFinal(hexStringToBytes(ciphertext));  
  119.         }  
  120.   
  121.         catch (Exception e) {  
  122.             // TODO: handle exception  
  123.         }  
  124.         return new String(passDec);  
  125.     }  
  126.   
  127.     /** 
  128.      * 將字節(jié)數組轉換為十六進制字符串 
  129.      *  
  130.      * @param src 
  131.      *            字節(jié)數組 
  132.      * @return 
  133.      */  
  134.     public static String bytesToHexString(byte[] src) {  
  135.         StringBuilder stringBuilder = new StringBuilder("");  
  136.         if (src == null || src.length <= 0) {  
  137.             return null;  
  138.         }  
  139.         for (int i = 0; i < src.length; i++) {  
  140.             int v = src[i] & 0xFF;  
  141.             String hv = Integer.toHexString(v);  
  142.             if (hv.length() < 2) {  
  143.                 stringBuilder.append(0);  
  144.             }  
  145.             stringBuilder.append(hv);  
  146.         }  
  147.         return stringBuilder.toString();  
  148.     }  
  149.   
  150.     /** 
  151.      * 將十六進制字符串轉換為字節(jié)數組 
  152.      *  
  153.      * @param hexString 
  154.      *            十六進制字符串 
  155.      * @return 
  156.      */  
  157.     public static byte[] hexStringToBytes(String hexString) {  
  158.         if (hexString == null || hexString.equals("")) {  
  159.             return null;  
  160.         }  
  161.         hexString = hexString.toUpperCase();  
  162.         int length = hexString.length() / 2;  
  163.         char[] hexChars = hexString.toCharArray();  
  164.         byte[] d = new byte[length];  
  165.         for (int i = 0; i < length; i++) {  
  166.             int pos = i * 2;  
  167.             d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));  
  168.         }  
  169.         return d;  
  170.     }  
  171.   
  172.     private static byte charToByte(char c) {  
  173.         return (byte"0123456789ABCDEF".indexOf(c);  
  174.     }  
  175.   
  176.     public static void main(String[] args) {  
  177.         int i=10;  
  178.         for (int j = 0; j < i; j++) {  
  179.             if((j)%3==0)  
  180.             {  
  181.                 System.out.print("<br>");  
  182.             }  
  183.             else {  
  184.                 System.out.print(j);  
  185.             }  
  186.         }  
  187.         System.out.print(-1%2==0);  
  188.         String str = "admin";  
  189.         String password = "123456";  
  190.   
  191.         System.out.println("明文:" + str);  
  192.         System.out.println("密碼:" + password);  
  193.   
  194.         try {  
  195.             byte[] salt = PasswordUtil.getStaticSalt();  
  196.             String ciphertext = PasswordUtil.encrypt(str, password, salt);  
  197.             System.out.println("密文:" + ciphertext);  
  198.             String plaintext = PasswordUtil.decrypt(ciphertext, password, salt);  
  199.             System.out.println("明文:" + plaintext);  
  200.         } catch (Exception e) {  
  201.             e.printStackTrace();  
  202.         }  
  203.     }  
  204. }  


 

 

 

MD5 加密


 

  1. import java.security.MessageDigest;  
  2.   
  3. import org.apache.commons.lang.StringUtils;  
  4.   
  5. public class MethodUtil{  
  6.     /** 
  7.      * 初始化 
  8.      * @return 
  9.      */  
  10.     public static MethodUtil getInit(){  
  11.         return new MethodUtil();  
  12.     }  
  13.     private static String byteArrayToHexString(byte b[]) {  
  14.         StringBuffer resultSb = new StringBuffer();  
  15.         for (int i = 0; i < b.length; i++)  
  16.             resultSb.append(byteToHexString(b[i]));  
  17.   
  18.         return resultSb.toString();  
  19.     }  
  20.   
  21.     private static String byteToHexString(byte b) {  
  22.         int n = b;  
  23.         if (n < 0)  
  24.             n += 256;  
  25.         int d1 = n / 16;  
  26.         int d2 = n % 16;  
  27.         return hexDigits[d1] + hexDigits[d2];  
  28.     }  
  29.       
  30.     /** 
  31.      *  MD5 加密   
  32.      *  
  33.      */  
  34.     public static String MD5(String origin) {  
  35.         String resultString = MD5Encode(origin,"UTF-8");  
  36.         if(StringUtils.isNotBlank(resultString)){  
  37.             return resultString.toUpperCase();  
  38.         }         
  39.         return resultString;  
  40.     }  
  41.       
  42.       
  43.     /** 
  44.      * MD5 比較 匹配origin 加密后是否等于md5 
  45.      * @param origin 密碼, 未加密 
  46.      * @param md5 已加密字符串 
  47.      * @return 
  48.      */  
  49.     public static boolean ecompareMD5(String origin,String md5) {  
  50.         String result =MD5(origin);  
  51.         return md5.equals(result);  
  52.     }  
  53.       
  54.       
  55. /* 
  56.  *  MD5 加密   
  57.  * */  
  58.     public static String MD5Encode(String origin, String charsetname) {  
  59.         String resultString = null;  
  60.         try {  
  61.             resultString = new String(origin);  
  62.             MessageDigest md = MessageDigest.getInstance("MD5");  
  63.             if (charsetname == null || "".equals(charsetname))  
  64.                 resultString = byteArrayToHexString(md.digest(resultString  
  65.                         .getBytes()));  
  66.             else  
  67.                 resultString = byteArrayToHexString(md.digest(resultString  
  68.                         .getBytes(charsetname)));  
  69.         } catch (Exception exception) {  
  70.           
  71.         }  
  72.         return resultString;  
  73.     }  
  74.   
  75.     private static final String hexDigits[] = { "0""1""2""3""4""5",  
  76.             "6""7""8""9""a""b""c""d""e""f" };  
  77.       
  78.     /** 
  79.      * 將byte數組轉換為表示16進制值的字符串,, 如:byte[]{8,18}轉換為:0813, 和public static byte[] 
  80.      * hexStr2ByteArr(String strIn) 互為可逆的轉換過程 
  81.      *  
  82.      * @param arrB 
  83.      *            需要轉換的byte數組 
  84.      * @return 轉換后的字符串 
  85.      * @throws Exception 
  86.      *             本方法不處理任何異常,,所有異常全部拋出 
  87.      */  
  88.     public static String byteArr2HexStr(byte[] arrB) throws Exception {  
  89.         int iLen = arrB.length;  
  90.         // 每個byte用兩個字符才能表示,所以字符串的長度是數組長度的兩倍  
  91.         StringBuffer sb = new StringBuffer(iLen * 2);  
  92.         for (int i = 0; i < iLen; i++) {  
  93.             int intTmp = arrB[i];  
  94.             // 把負數轉換為正數  
  95.             while (intTmp < 0) {  
  96.                 intTmp = intTmp + 256;  
  97.             }  
  98.             // 小于0F的數需要在前面補0  
  99.             if (intTmp < 16) {  
  100.                 sb.append("0");  
  101.             }  
  102.             sb.append(Integer.toString(intTmp, 16));  
  103.         }  
  104.         return sb.toString();  
  105.     }  
  106.       
  107.     /** 
  108.      * 將表示16進制值的字符串轉換為byte數組, 和public static String byteArr2HexStr(byte[] arrB) 
  109.      * 互為可逆的轉換過程 
  110.      *  
  111.      * @param strIn 
  112.      *            需要轉換的字符串 
  113.      * @return 轉換后的byte數組 
  114.      * @throws Exception 
  115.      *             本方法不處理任何異常,所有異常全部拋出 
  116.      * @author <a href="mailto:[email protected]">LiGuoQing</a > 
  117.      */  
  118.     public static byte[] hexStr2ByteArr(String strIn) throws Exception {  
  119.         byte[] arrB = strIn.getBytes();  
  120.         int iLen = arrB.length;  
  121.   
  122.         // 兩個字符表示一個字節(jié),,所以字節(jié)數組長度是字符串長度除以2  
  123.         byte[] arrOut = new byte[iLen / 2];  
  124.         for (int i = 0; i < iLen; i = i + 2) {  
  125.             String strTmp = new String(arrB, i, 2);  
  126.             arrOut[i / 2] = (byte) Integer.parseInt(strTmp, 16);  
  127.         }  
  128.         return arrOut;  
  129.     }  
  130.       
  131.       
  132. }  


 

 

 

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現有害或侵權內容,,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多