废话不多说 , 直接奉上代码:
代码一
pacote com.eabax.plugin.yundada.utils; importar java.io.ioException; importar java.security.invalidkeyexception; importar java.security.nosuchalgorithMexception; import java.security.securendom; importar java.secception.iSCECCESS.VECCESC.VECCESC.VECCECCESC.VECCECCESC.VECCECCECCESC.VECSCESCECECCECCIOND.IMECCESCE.VECCECCECCESC.SCECCECCESC.SCECCECCESPSP.CECCECCENTS; .crypto.BadPaddingException;import javax.crypto.Cipher;import javax.crypto.IllegalBlockSizeException;import javax.crypto.NoSuchPaddingException;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import org.apache.commons.codec.binary.base64; import sun.misc.base64decoder; classe pública Desencrythelper {private final estático des = "des"; / ** * 生成密钥 * @param Employeecode */ public static string getdeskey (string Encryptstr) {if (! Cachemanager.getcache (). EncryptKey _ "+EncryptStr, Encryptstr+" Tablemiyaokey "); } String key = (string) Cachemanager.getCache (). Get ("EncryptKey _"+EncryptStr); chave de retorno; } / ** * Descrição 根据键值进行解密 * @Param Data * @param chave 加密键 byte 数组 * @return * @throws ioexception * @throws Exception * / public static string descripto (string data, string key) lança ioexception, Exceção {if (data == null) retorna nulo; Base64decoder decodificador = new base64decoder (); byte [] BUF = decodificador.DecodeBuffer (Data); byte [] bt = descriptografar (buf, key.getBytes ()); retornar nova string (BT); } / ** * 对字符串加密 * @param str * @return * @throws InvalidKeyException * @THOWSOLCALBlockSizeException * @Throws badpaddingException * @ThalidKeysPeCexception * @THOWSUCHALGorithMexception * @THOWSENS NOSUchPaddingException * / public Strat String String encryptStr) throws InvalidKeyException, IllegalBlockSizeException, BadPaddingException, InvalidKeySpecException, NoSuchAlgorithmException, NoSuchPaddingException { //获取key String key = getDESKey(encryptStr); // 获取密钥 SecretKeyFactory Factory = secretKeyFactory.getInstance ("DES"); DESKEYSPEC Keyspec = new Deskeyspec (key.getBytes ()); SecretKey deskey = factory.generateSecret (Keyspec); // cifra 负责完成加密或解密工作 cifra c = cipher.getInstance ("des"); // 根据密钥 , 对 cifra 对象进行初始化 , decrypt_mode 表示加密模式 c.init (cipher.encrypt_mode, Deskey); byte [] src = str.getBytes (); // 该字节数组负责保存加密的结果 byte [] cipherbyte = c.Dofinal (src); String enstr = new String (base64.EncodeBase64 (Cipherbyte)); retornar enstr; } / ** * Descrição 根据键值进行解密 * @Param Data * @param chave 加密键 byte 数组 * @return * @throws exceção * / byte estático privado [] descriptografar (byte [] dados, byte [] key) lança Exceção {// 生成一个可信任的随机数源 SecureRandom Sr = new SecureRandom (); // 从原始密钥数据创建 Deskeyspec 对象 Deskeyspec dks = new Deskeyspec (chave); // 创建一个密钥工厂 , 然后用它把 DESKEYSPEC 转换成 SecretKey 对象 SecretKeyFactory KeyFactory = SecretKeyFactory.getInstance (DES); SecretKey SecureKey = keyFactory.GenerateSecret (DKS); // cifra 对象实际完成解密操作 cifra cifra = cifra.getInstance (DES); // 用密钥初始化 cifra 对象 cipher.init (cipher.decrypt_mode, secureKey, sr); return cipher.dofinal (dados); }}代码二
pacote com.sinosoft.olyvem.common; importar java.security.securerandom; importar javax.crypto.cipher; importar javax.crypto.secretKey; importar javax.crypto.secretkeyfactory; import javax.cryptoptox.deskeyspec; .Base64Encoder; Public Class des ... {Private Byte [] Deskey; public des (byte [] deskey) ... {this.deskey = deskey; } public byte [] doencrypt (byte [] PLAYTEXT) lança exceção ... {// des 算法要求有一个可信任的随机数源 securendom sr = new SecureRandom (); BYTE RAWKEYDATA [] = DESKEY;/** //*用某种方法获得密匙数据*/// 从原始密匙数据创建 DESKEYSPEC 对象 DESKEYSPEC DKS = new Deskeyspec (RawKeyData); // 创建一个密匙工厂 , 然后用它把 deskeyspec 转换成 // 一个 secretKey 对象 secretKeyFactory keyFactory = secretKeyFactory.getInstance ("des"); SecretKey key = keyFactory.GenerateSecret (DKS); // cifra 对象实际完成加密操作 cifra cifra = cifra.getInstance ("des"); // 用密匙初始化 cifra 对象 cipher.init (cipher.encrypt_mode, chave, sr); // 现在 , 获取数据并加密 bytes dados [] = PLAYTEXT;/** //*用某种方法获取数据*/// 正式执行加密操作 byte criprytedData [] = cipher.dofinal (dados); Retornar EncryptedData; } public byte [] DODECRYPT (BYTE [] EncryptText) lança exceção ... {// DES 算法要求有一个可信任的随机数源 SecureRandom Sr = new SecureRandom (); BYTE RAWKEYDATA [] = Deskey; /** //*用某种方法获取原始密匙数据*/// 从原始密匙数据创建一个 deskeyspec 对象 deskeyspec dks = new Deskeyspec (RawKeyData); // 创建一个密匙工厂 , 然后用它把 deskeyspec 对象转换成 // 一个 secretKey 对象 secretKeyFactory keyFactory = secretKeyFactory.getInstance ("des"); SecretKey key = keyFactory.GenerateSecret (DKS); // cifra 对象实际完成解密操作 cifra cifra = cifra.getInstance ("des"); // 用密匙初始化 cifra 对象 cipher.init (cipher.decrypt_mode, chave, sr); // 现在 , 获取数据并解密 byte EncryptedData [] = EncryptText;/** //*获得经过加密的数据*/// 正式执行解密操作 byte descriptografata [] = cipher.dofinal (criptografiaData); retornar descriptografadoData; } public static void main (string [] args) lança exceção ... {string key = "ftpxpass"; String value = "olímpico"; 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 [] valor) ... {string newstring = ""; for (int i = 0; i <value.length; i ++) ... {byte b = value [i]; String 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 有所帮助。