废话不多说 直接奉上代码.
代码一
paquete com.eabax.plugin.yundada.utils; import java.io.ioException; import java.security.invalidkeyException; import java.security.nosuchalgorithMexception; .crrypto.badpaddingexception; import javax.crypto.cipher; import javax.crypto.illegalblocksizeException; import javax.crypto.nosuchpaddingexception; import javax.crypto.ssspecretke org.apache.commons.codec.binary.base64; import sun.misc.base64decoder; public class desencrypthelper {private final estática final cadena des = "des"; / ** * 生成密钥 * @param EmployeCode */ public static String getDeskey (String CiCryptStr) {if (! Cachemanager.getCache (). Contanskey ("CiCryptKey _"+CiCryptStr)) {Cachemanager.getCache (). PUT "" CiCryptKey _ "+CiCryptStr, CiCryPTSTR+" TABLEMIYAOKEY "); } String key = (string) Cachemanager.getCache (). Get ("CiCryptKey _"+CiCryptStr); tecla de retorno; } / ** * Descripción 根据键值进行解密 * @param data * @param key 加密键 byte 数组 * @return * @throws ioexception * @throws excepción * / public static string decrypt (datos de cadena, tecla de cadena) lanza ioexception, Excepción {if (data == null) return null; Base64Decoder decoder = new Base64Decoder (); byte [] buf = decoder.decodeBuffer (datos); byte [] bt = Decrypt (buf, key.getBytes ()); devolver nueva cadena (BT); } / ** * 对字符串加密 * @param str * @return * @throws invalidkeyException * @throws ilegalBlockSizeException * @throws badpaddingException * @throws invalidkeySpeCexception * @throws nosuchalgorithmexception * @throws nosuchpaddingexception * / public string string string getenencrypry (string,,,,,, striet,,,,,, strat. String CiCryptStr) lanza InvalidKeyException, ilegalblocksizeException, badpaddingException, InvalidKeySpeCexception, nosuchalgorithMexxception, nosuchpaddingException {// 获取 Key String Key = GetDeskey (CiCryPtstr); // 获取密钥 SecretKeyFactory Factory = SecretKeyFactory.getInstance ("DES"); Deskeyspec keySpec = new DeskeySPEC (key.getBytes ()); Secretkey deskey = factory.generatesecret (keySpec); // cifrado 负责完成加密或解密工作 cifrado c = cifrado.getInstance ("des"); // 根据密钥 , 对 CIPHER 对象进行初始化 , DECRYPT_MODE 表示加密模式 C.INIT (CIPHER.ENCRYPT_MODE, DESKEY); byte [] src = str.getBytes (); // 该字节数组负责保存加密的结果 byte [] cipherbyte = c.dofinal (src); Cadena EnStr = new String (base64.encodeBase64 (cipherbyte)); devolver Enstrtr; } / ** * Descripción 根据键值进行解密 * @param data * @param key 加密键 byte 数组 * @return * @throws excepción * / private static byte [] decrypt (byte [] data, byte [] key) lanza Excepción {// 生成一个可信任的随机数源 Securerandom sr = new SecureRandom (); // 从原始密钥数据创建 DESKEYSPEC 对象 DESKEYSPEC DKS = new DeskeySPEC (clave); // 创建一个密钥工厂 , 然后用它把 DESKEYSPEC 转换成 SecretKey 对象 SecretKeyFactory KeyFactory = SecretKeyFactory.getInstance (des); SecretKey SecureKey = KeyFactory.GeneratesECret (DKS); // cifrado 对象实际完成解密操作 cifrado cifrado = cifrado.getInstance (des); // 用密钥初始化 cifrado 对象 cipher.init (cipher.decrypt_mode, securekey, sr); return cipher.dofinal (datos); }}代码二
paquete com.sinosoft.olyvem.common; import java.security.secureerandom; import javax.crypto.cipher; import javax.crypto.secretkey; import javax.crypto.secretkeyfactory; import javax.crypto.spec.deskeyspec; import sun.miscing .Base64Encoder; clase pública des ... {byte privado [] deskey; public des (byte [] deskey) ... {this.deskey = deskey; } public byte [] doEnsrypt (byte [] asignxt) lanza la excepción ... {// des 算法要求有一个可信任的随机数源 Secureandom Sr = new Secureandom (); byte rawkeydata [] = deskey;/** //*用某种方法获得密匙数据*/// 从原始密匙数据创建 Deskeyspec 对象 deskeyspec dks = new DeskeySpec (rawKeyData); // 创建一个密匙工厂 , 然后用它把 DESKEYSPEC 转换成 // 一个 SecretKey 对象 SecretKeyFactory KeyFactory = SecretKeyFactory.getInstance ("Des"); SecretKey Key = KeyFactory.GeneratesECret (DKS); // cifrado 对象实际完成加密操作 cifrado cifrado = cifrado.getInstance ("des"); // 用密匙初始化 CIPHER 对象 CIPHER.INIT (CIPHER.ENCRYPT_MODE, KEY, SR); // 现在 , 获取数据并加密 获取数据并加密 Datos de byte [] = Entraintext;/** //*用某种方法获取数据*/// 正式执行加密操作 BYTE CiCrypTedData [] = cipher.dofinal (datos); return cifrypedData; } public byte [] dodecrypt (byte [] cifryptText) lanza la excepción ... {// des 算法要求有一个可信任的随机数源 Secureandom sr = new Secureandom (); byte rawkeydata [] = deskey; /** //*用某种方法获取原始密匙数据*/// 从原始密匙数据创建一个 DESKEYSPEC 对象 DESKEYSPEC DKS = new DesKEYSPEC (RawKeyData); // 创建一个密匙工厂 , 然后用它把 DESKEYSPEC 对象转换成 // 一个 SecretKey 对象 SecretKeyFactory KeyFactory = SecretKeyFactory.getInstance ("Des"); SecretKey Key = KeyFactory.GeneratesECret (DKS); // cifrado 对象实际完成解密操作 cifrado cifrado = cifrado.getInstance ("des"); // 用密匙初始化 cifrado 对象 cipher.init (cipher.decrypt_mode, key, sr); // 现在 , 获取数据并解密 Byte CiCrypTedData [] = cifryptText;/** //*获得经过加密的数据*/// 正式执行解密操作 Byte DecryptedData [] = Cipher.Dofinal (CiCrypTedData); devolver descifradodata; } public static void main (string [] args) lanza la excepción ... {string key = "ftpxpass"; Valor de cadena = "olímpico"; Base64Encoder base64Encoder = new Base64Encoder (); Des desencrypt = new des (key.getBytes ()); byte [] encryptText = desencrypt.doencrypt (value.getBytes ()); //System.out.println("DoEncrypt - " + toHexString (cifryptText)); System.out.println ("doEnspryp -" + base64Encoder.Encode (CiCryptText)); byte [] descryptText = desencrypt.DodeCrypt ("r9ngyckatdo =". getBytes ()); System.out.println ("Dodecrypt -" + nueva cadena (DecryptText)); //System.out.println("DodeCrypt - " + toHexString (DecryptText)); } public static string toHexString (byte [] valor) ... {string newString = ""; for (int i = 0; i <value.length; i ++) ... {byte b = value [i]; Cadena str = integer.tohexString (b); if (str.length ()> 2) ... {str = str.substring (str.length () - 2); } if (str.length () <2) ... {str = "0" + str; } Newstring += str; } return newstring.toupperCase (); }}以上就是本文关于 des 加密解密的代码了 加密解密的代码了 希望对大家学习 java 有所帮助。