废话不多说,直接奉上代码::
代码一
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;/** //*获得经过加密的数据*///////- byte 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有所帮助。