一文让你轻松了解 JAVA 开发中的四种加密方法
生活随笔
收集整理的這篇文章主要介紹了
一文让你轻松了解 JAVA 开发中的四种加密方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、工具類
md5加密工具類
base64加密工具類
Bcrypt工具類
二、加密測試
MD5加密測試
base64加密測試
SHA加密測試
BCrypt加密測試
一、工具類
1. md5加密工具類
package?加密Tester.util; import?java.security.MessageDigest;public?class?MD5Utils?{private?static?final?String?hexDigIts[]?=?{"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};/***?MD5加密*?@param?origin?字符*?@param?charsetname?編碼*?@return*/public?static?String?MD5Encode(String?origin,?String?charsetname){String?resultString?=?null;try{resultString?=?new?String(origin);MessageDigest?md?=?MessageDigest.getInstance("MD5");if(null?==?charsetname?||?"".equals(charsetname)){resultString?=?byteArrayToHexString(md.digest(resultString.getBytes()));}else{resultString?=?byteArrayToHexString(md.digest(resultString.getBytes(charsetname)));}}catch?(Exception?e){}return?resultString;}public?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();}public?static?String?byteToHexString(byte?b){int?n?=?b;if(n?<?0){n?+=?256;}int?d1?=?n?/?16;int?d2?=?n?%?16;return?hexDigIts[d1]?+?hexDigIts[d2];}}2. base64加密工具類
package?加密Tester.util; import?org.apache.commons.codec.binary.Base64; import?java.io.UnsupportedEncodingException;public?class?Base64Util?{//?字符串編碼private?static?final?String?UTF_8?=?"UTF-8";/***?加密字符串*?@param?inputData*?@return*/public?static?String?decodeData(String?inputData)?{try?{if?(null?==?inputData)?{return?null;}return?new?String(Base64.decodeBase64(inputData.getBytes(UTF_8)),?UTF_8);}?catch?(UnsupportedEncodingException?e)?{}return?null;}/***?解密加密后的字符串*?@param?inputData*?@return*/public?static?String?encodeData(String?inputData)?{try?{if?(null?==?inputData)?{return?null;}return?new?String(Base64.encodeBase64(inputData.getBytes(UTF_8)),?UTF_8);}?catch?(UnsupportedEncodingException?e)?{}return?null;}public?static?void?main(String[]?args)?{System.out.println(Base64Util.encodeData("我是中文"));String?enStr?=?Base64Util.encodeData("我是中文");System.out.println(Base64Util.decodeData(enStr));} }3. Bcrypt工具類
package?加密Tester.util; import?java.util.HashMap; import?java.util.Map;import?org.apache.commons.lang3.StringUtils; import?org.mindrot.bcrypt.BCrypt;public?class?BcryptCipher?{//?generate?salt?seedprivate?static?final?int?SALT_SEED?=?12;//?the?head?fo?saltprivate?static?final?String?SALT_STARTSWITH?=?"$2a$12";public?static?final?String?SALT_KEY?=?"salt";public?static?final?String?CIPHER_KEY?=?"cipher";/***?Bcrypt?encryption?algorithm?method*?@param?encryptSource*??????????????????need?to?encrypt?the?string*?@return?Map?,?two?values?in?Map?,?salt?and?cipher*/public?static?Map<String,?String>?Bcrypt(final?String?encryptSource)?{String?salt??=?BCrypt.gensalt(SALT_SEED);Map<String,?String>?bcryptResult?=?Bcrypt(salt,?encryptSource);return?bcryptResult;}/****?@param?salt?encrypt?salt,?Must?conform?to?the?rules*?@param?encryptSource*?@return*/public?static?Map<String,?String>?Bcrypt(final?String?salt,?final?String?encryptSource)?{if?(StringUtils.isBlank(encryptSource))?{throw?new?RuntimeException("Bcrypt?encrypt?input?params?can?not?be?empty");}if?(StringUtils.isBlank(salt)?||?salt.length()?!=?29)?{throw?new?RuntimeException("Salt?can't?be?empty?and?length?must?be?to?29");}if?(!salt.startsWith(SALT_STARTSWITH))?{throw?new?RuntimeException("Invalid?salt?version,?salt?version?is?$2a$12");}String?cipher?=?BCrypt.hashpw(encryptSource,?salt);Map<String,?String>?bcryptResult?=?new?HashMap<String,?String>();bcryptResult.put(SALT_KEY,?salt);bcryptResult.put(CIPHER_KEY,?cipher);return?bcryptResult;}}二、加密測試
1. MD5加密測試
package?加密Tester;import?加密Tester.util.MD5Utils;/***?MD5加密*/ public?class?MD5Test?{public?static?void?main(String[]?args)?{String?string?=?"我是一句話";String?byteArrayToHexString?=?MD5Utils.byteArrayToHexString(string.getBytes());System.out.println(byteArrayToHexString);//e68891e698afe4b880e58fa5e8af9d} }2. base64加密測試
package?加密Tester;import?java.util.Base64;import?加密Tester.util.Base64Util;/***?base64加密*/ public?class?Bast64Tester?{public?static?void?main(String[]?args)?{String?string?=?"我是一個字符串";String?encodeData?=?Base64Util.encodeData(string);?//加密String?decodeData?=?Base64Util.decodeData(encodeData);?//解密System.out.println(encodeData);//5oiR5piv5LiA5Liq5a2X56ym5LiySystem.out.println(decodeData);//我是一個字符串}}3. SHA加密測試
package?加密Tester;import?org.apache.commons.codec.digest.Sha2Crypt;/***?SHA加密*/ public?class?ShaTest?{public?static?void?main(String[]?args)?{String?string?=?"我是一句話";String?sha256Crypt?=?Sha2Crypt.sha256Crypt(string.getBytes());System.out.println(sha256Crypt);//$5$AFoQTeyt$TiqmobvcQXjXaAQMYosAAO4KI8LfigZMGHzq.Dlp4NC} }4. BCrypt加密測試
package?加密Tester;import?java.security.SecureRandom; import?java.util.Map; import?java.util.UUID;import?加密Tester.util.BcryptCipher; import?加密Tester.util.MD5Utils;/***?BCrypt加密*/ public?class?BCryptTest?{public?static?void?main(String[]?args)?{String?string?=?"我是一句話";Map<String,?String>?bcrypt?=?BcryptCipher.Bcrypt(string);System.out.println(bcrypt.keySet());?//[cipher,?salt]System.out.println(bcrypt.get("cipher"));?//$2a$12$ylb92Z84gqlrSfzIztlCV.dK0xNbw.pOv3UwXXA76llOsNRTJsE/.System.out.println(bcrypt.get("salt"));?//$2a$12$ylb92Z84gqlrSfzIztlCV.Map<String,?String>?bcrypt2?=?BcryptCipher.Bcrypt(bcrypt.get("salt"),string);System.out.println(bcrypt2.get("SALT_KEY"));?//nullSystem.out.println(bcrypt2.get("CIPHER_KEY"));?//null} }?
總結(jié)
以上是生活随笔為你收集整理的一文让你轻松了解 JAVA 开发中的四种加密方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mybatis 的工作原理,写得太好了!
- 下一篇: 如何快速安全的插入千万条数据?