廢話不多說,直接奉上代碼::
代碼一
package com.eabax.plugin.yundada.utils;import java.io.IOException;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.security.spec.InvalidKeySpecException;import javax 。導入org.apache.commons.codec.binary.base64;導入sun.misc.base64decoder; public class desencrypthelper {私有最終靜態靜態字符串des =“ des”; / ** *生成密鑰 * @param loasseeecode */ public static String getDeskey(string encryptstr){if(! Encryptkey _“+encryptstr,encryptstr+“ tablemiyaokey”); }字符串key =(string)cachemanager.getCache()。get(“ encryptkey _”+encryptstr);返回密鑰; } / ** *描述根據鍵值進行解密* @param data * @param鍵加密鍵字節數組* @return * @throws ioexception * @throws異常* / public static String decrypt(字符串數據,字符串鍵,字符串鍵)throws ioexception,ioexception,ioexception,ioexception,異常{if(data == null)返回null; BASE64DECODER解碼器= new Base64Decoder(); byte [] buf = dexoder.decodebuffer(data); byte [] bt = decrypt(buf,key.getBytes());返回新字符串(BT); } /** * 對字符串加密 * @param str * @return * @throws InvalidKeyException * @throws IllegalBlockSizeException * @throws BadPaddingException * @throws InvalidKeySpecException * @throws NoSuchAlgorithmException * @throws NoSuchPaddingException */ public static String getEncryptStr(String str,字符串EncryptStr)引發無效的Keyexception,IllegalBlockSizeexception,BadPaddingException,InvalidKeySpeCexception,NosuchalGorithmmexception,NosuchpadDingException {/// //獲取密鑰secretKeyFactory Factory = SecretKeyFactory.getInstance(“ DES”); deskeyspec keyspec = new deskeyspec(key.getBytes()); secretkey deskey = factory.generateCret(keyspec); // cipher負責完成加密或解密工作密碼c = cipher.getInstance(“ des”); //根據密鑰,對cipher對象進行初始化,decrypt_mode表示加密模式c.init(cipher.encrypt_mode,deskey); byte [] src = str.getBytes(); //該字節數組負責保存加密的結果字節[] cipherbyte = c.dofinal(src);字符串endtr = new String(base64.encodebase64(cipherbyte));返回恩斯特} / ** *描述根據鍵值進行解密* @param data * @param鍵加密鍵字節數組* @return * @throws excreption * / private static byte [] decrypt [] decrypt(byte [] data,byte [ ] key)拋出異常{//生成一個可信任的隨機數源secureerandom sr = new SecureRandom(); //從原始密鑰數據創建deskeyspec對象deskeyspec dks = new deskeyspec(key); //創建一個密鑰工廠,然後用它把deskeyspec轉換成secretkey對象secretkeyfactory key -factory = secretKeyFactory.getInstance(des); SecretKey SecureKey = keyfactory.generateCret(dks); //密碼對象實際完成解密操作密碼密碼= cipher.getInstance(des); //用密鑰初始化cipher對象cipher.init(cipher.decrypt_mode,securekey,sr);返回cipher.dofinal(數據); }}}代碼二
package com.sinosoft.olyvem.common;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import sun.misc .base64encoder; public class des ... {private byte [] deskey; public des(byte [] deskey)... {this.deskey = deskey; } public byte [] doencrypt(byte [] plaintext)拋出異常... {//des算法要求有一個可信任的隨機數源securerandomsr = new Secureerandom();字節RAWKEYDATA [] = DESKEY;/** //*用某種方法獲得密匙數據*/// deskeyspec對象deskeyspec dks = new deskeyspec(rawKeyData); //創建一個密匙工廠,然後用它把deskeyspec轉換成// secretkey對象secretkeyfactory key -factory = secretKeyFactory.getInstance(“ des”); secretkey key = keyfactory.generateCret(dks); //密碼對象實際完成加密操作密碼cipher = cipher.getInstance(“ des”); //用密匙初始化cipher對象cipher.init(cipher.encrypt_mode,key,sr); //現在,獲取數據並加密字節data [] = plaintext;/** //*用某種方法獲取數據*/// // //正式執行加密操作字節cencryptedData [] = cipher.dofinal( data);返回EncryptedData; } public byte [] dodecrypt(byte [] encryptText)拋出異常... {//des算法要求有一個可信任的隨機數源securerandomsr = new Secureerandom();字節RAWKEYDATA [] = DESKEY; /** //*用某種方法獲取原始密匙數據*/// //從原始密匙數據創建一個deskeyspec對象deskeyspec dks = new deskeyspec(rawKeyData); //創建一個密匙工廠,然後用它把deskeyspec對象轉換成// secretkey對象secretkeyfactory key -factory = secretKeyFactory.getInstance(“ des”); secretkey key = keyfactory.generateCret(dks); //密碼對象實際完成解密操作密碼cipher = cipher.getInstance(“ des”); //用密匙初始化cipher對象cipher.init(cipher.decrypt_mode,key,sr); //現在,獲取數據並解密字節encryptedData [] = encryptText;/** //*獲得經過加密的數據*//////正式執行解密操作字節decrypteddata [] = cipher.dofinal.dofinal( encryptedData);返回Decrypteddata; } public static void main(string [] args)引發異常... {字符串key =“ ftpxpass”;字符串值=“奧林匹克”; base64encoder base64encoder = new base64encoder(); des desencrypt = new des(key.getBytes()); byte [] encryptText = desencrypt.doencrypt(value.getBytes()); //system.out.println(“doencrypt-“ + tohexstring(encryptText)); system.out.println(“ doencrypt-” + base64encoder.encode(encryptText)); byte [] decryptText = desencrypt.dodecrypt(“ r9ngyckatdo =”。getBytes()); system.out.println(“ dodecrypt-” + new String(decryptText)); //system.out.println(“dodecrypt-“ + tohexstring(decryptText)); } public static String toHexString(byte [] value)... {字符串newstring =“”; for(int i = 0; i <value.length; i ++)... {字節b = value [i];字符串str = integer.tohexstring(b); if(str.length()> 2)... {str = str.substring(str.length()-2); } if(str.length()<2)... {str =“ 0” + str; } newsring += str; }返回newstring.touppercase(); }}}以上就是本文關於des加密解密的代碼了,希望對大家學習java有所幫助。