java加密算法--MD5加密和哈希散列带秘钥加密算法源码
java加密算法--MD5加密和哈希散列带秘钥加密算法源码
最近学习加密算法的知识,利用MD5 加密,百度一下网上资料很多,不是很详细,这里就整理下如何实现用MD5加密和哈希散列带秘钥加密算法,大家可以看下。
实现代码:
packagecom.ompa.common.utils; importjava.security.MessageDigest; importjava.security.NoSuchAlgorithmException; importjavax.crypto.Mac; importjavax.crypto.SecretKey; importjavax.crypto.spec.SecretKeySpec; /** *采用MD5加密 * *@authorzhangcd *@date2016-4-29 */ publicclassEncryptUtil{ privatestaticfinalStringMAC_NAME="HmacSHA1"; privatestaticfinalStringENCODING="UTF-8"; privatestaticfinalStringkey="iloveyou"; /*** *MD5加码生成32位md5码 */ publicstaticStringstring2MD5(StringinStr){ MessageDigestmd5=null; try{ md5=MessageDigest.getInstance("MD5"); }catch(Exceptione){ System.out.println(e.toString()); e.printStackTrace(); return""; } char[]charArray=inStr.toCharArray(); byte[]byteArray=newbyte[charArray.length]; for(inti=0;i<charArray.length;i++) byteArray[i]=(byte)charArray[i]; byte[]md5Bytes=md5.digest(byteArray); StringBufferhexValue=newStringBuffer(); for(inti=0;i<md5Bytes.length;i++){ intval=((int)md5Bytes[i])&0xff; if(val<16) hexValue.append("0"); hexValue.append(Integer.toHexString(val)); } returnhexValue.toString(); } /*** *MD5加密生成32位md5码 */ publicstaticStringstringMD5(StringinStr){ returnstring2MD5(string2MD5(inStr)); } /** *加密解密算法 */ publicstaticStringconvertMD5(StringinStr){ char[]a=inStr.toCharArray(); for(inti=0;i<a.length;i++){ a[i]=(char)(a[i]^'t'); } Strings=newString(a); returns; } /** *HMAC-SHA1 *@paramencryptText *@paramencryptKey *@return *@throwsException */ publicstaticStringHmacSHA1Encrypt(StringencryptText,StringencryptKey)throwsException { byte[]data=encryptKey.getBytes(ENCODING); SecretKeysecretKey=newSecretKeySpec(data,MAC_NAME); Macmac=Mac.getInstance(MAC_NAME); mac.init(secretKey); byte[]text=encryptText.getBytes(ENCODING); byte[]str=mac.doFinal(text); //CreateHexString StringBufferhexString=newStringBuffer(); //字节数组转换为十六进制数 for(inti=0;i<str.length;i++){ StringshaHex=Integer.toHexString(str[i]&0xFF); if(shaHex.length()<2){ hexString.append(0); } hexString.append(shaHex); } returnhexString.toString(); } publicstaticStringconvertSHA1(Stringinstr){ try{ returnHmacSHA1Encrypt(instr,key); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); return""; } } //测试主函数 publicstaticvoidmain(Stringargs[])throwsException{ //哈希散列带秘钥加密 Stringtt=convertSHA1("123456"); System.out.println(tt); //MD5加密 Strings=newString("123456"); System.out.println("原始:"+s); System.out.println("MD5后:"+string2MD5(s)); System.out.println("MD5加密后:"+stringMD5(s)); } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!