Java实现的3des加密解密工具类示例
本文实例讲述了Java实现的3des加密解密工具类。分享给大家供大家参考,具体如下:
packagecom.gcloud.common; importorg.apache.poi.poifs.property.Child; importorg.bouncycastle.jce.provider.BouncyCastleProvider; importjavax.crypto.*; importjavax.crypto.spec.IvParameterSpec; importjavax.crypto.spec.SecretKeySpec; importjava.io.BufferedReader; importjava.io.File; importjava.io.IOException; importjava.io.InputStreamReader; importjava.net.URL; importjava.security.*; importjava.security.spec.AlgorithmParameterSpec; /** *三重数据加密算法工具类 *Createdbycharlinon2017/9/11. */ publicclassV3DESUtil{ //密钥存放位置 publicstaticStringFILENAME="d:/3des.key"; //1为加密,0为解密 privateintisEncrypt=-1; //加密/解密密钥,长度为16byte或者24byte。 privateStringkeyStr; //要加密/解密信息(解密时需为十六进制显示的字符串) privateStringmessage; publicV3DESUtil(){ } publicV3DESUtil(intisEncrypt,StringkeyStr,Stringmessage){ this.isEncrypt=isEncrypt; this.keyStr=keyStr; this.message=message; } //numStr=12345678 publicStringV3DESChiper(StringnumStr){ Stringresult=null; try{ Security.addProvider(newBouncyCastleProvider()); URLurl=getClass().getResource(FILENAME); FilemyFile=newFile(FILENAME); if(!myFile.exists()){ return"Can'tFind"+FILENAME; } try{ BufferedReaderin=newBufferedReader(newInputStreamReader(url.openStream())); while((keyStr=in.readLine())==null){ return"读取密钥失败!"; } in.close(); }catch(IOExceptione){ e.printStackTrace(); } SecretKeykey=newSecretKeySpec(keyStr.getBytes(),"DESede"); result=null; byte[]textByte=null; byte[]messageByte=null; Ciphercipher=Cipher.getInstance("DESede/CBC/PKCS5Padding","BC"); AlgorithmParameterSpecspec=newIvParameterSpec(numStr.getBytes()); if(isEncrypt==1){ messageByte=message.getBytes(); cipher.init(Cipher.ENCRYPT_MODE,key,spec); }elseif(isEncrypt==0){ messageByte=decodeHex(message); cipher.init(Cipher.DECRYPT_MODE,key,spec); }else{ return"加解密设置错误,请确认输入:1为加密;0为解密"; } textByte=cipher.doFinal(messageByte); if(isEncrypt==1){ result=encodeHex(textByte); }elseif(isEncrypt==0){ result=newString(textByte); } }catch(Exceptione){ e.printStackTrace(); } returnresult; } publicstaticfinalStringencodeHex(bytebytes[]){ StringBufferbuf=newStringBuffer(bytes.length*2); for(inti=0;i' case63://'?' case64://'@' case65://'A' case66://'B' case67://'C' case68://'D' case69://'E' case70://'F' case71://'G' case72://'H' case73://'I' case74://'J' case75://'K' case76://'L' case77://'M' case78://'N' case79://'O' case80://'P' case81://'Q' case82://'R' case83://'S' case84://'T' case85://'U' case86://'V' case87://'W' case88://'X' case89://'Y' case90://'Z' case91://'[' case92://'\\' case93://']' case94://'^' case95://'_' case96://'`' default: return0; } } publicstaticStringgetFILENAME(){ returnFILENAME; } publicintgetIsEncrypt(){ returnisEncrypt; } publicvoidsetIsEncrypt(intisEncrypt){ this.isEncrypt=isEncrypt; } publicStringgetKeyStr(){ returnkeyStr; } publicvoidsetKeyStr(StringkeyStr){ this.keyStr=keyStr; } publicStringgetMessage(){ returnmessage; } publicvoidsetMessage(Stringmessage){ this.message=message; } publicstaticvoidmain(String[]args){ Stringkey="yycg12345678901234567890"; Stringoldstring="test"+"#"+"test"+"#"+System.currentTimeMillis(); V3DESUtiltempDesEn=newV3DESUtil(1,oldstring,key); StringstrTemp=tempDesEn.V3DESChiper("12345678"); System.out.println("strTemp==="+strTemp); V3DESUtiltempDe=newV3DESUtil(0,strTemp,key); StringstrTempDe=tempDe.V3DESChiper("12345678"); System.out.println("strTempDe==="+strTempDe); } }
PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:
文字在线加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode
MD5在线加密工具:
http://tools.jb51.net/password/CreateMD5Password
在线散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt
在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha
在线sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode
更多关于java相关内容感兴趣的读者可查看本站专题:《Java数学运算技巧总结》、《Java数据结构与算法教程》、《Java字符与字符串操作技巧总结》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。