java中3des秘钥的生成以及加解密代码:
public class DESTest { public static void main(String[] args) { //数据明文 String data = "zhegsjsjfsfjs"; try { //1.java生成3des秘钥加解密 Key desKey = get3DESKey(); String encrypt = new String(Base64.encode(desKey.getEncoded())); System.out.println("java生成的3des秘钥为:" + encrypt); byte[] bytes = encryptOrDecryptBy3DES(data.getBytes("utf-8"), Cipher.ENCRYPT_MODE, desKey); System.out.println("java生成的3des秘钥加密后的数据:" + new String(Base64.encode(bytes))); byte[] bytes1 = encryptOrDecryptBy3DES(bytes, Cipher.DECRYPT_MODE, desKey); System.out.println("java生成3des密钥解密后的数据:" + new String(bytes1)); //2.已知3des秘钥串加解密 Key key = strTo3DESKey("LAiSOwt1T2RiXdPT9NYyOJRkYjiYVPiS"); byte[] b = encryptOrDecryptBy3DES(data.getBytes("utf-8"), Cipher.ENCRYPT_MODE, key); System.out.println("已知3des秘钥串加密后的数据" + new String(Base64.encode(b))); byte[] b1 = encryptOrDecryptBy3DES(b, Cipher.DECRYPT_MODE, key); System.out.println("已知3des秘钥串解密后的数据:" + new String(b1)); } catch (Exception e) { e.printStackTrace(); } } //获取des密钥 public static Key get3DESKey() throws NoSuchAlgorithmException { KeyGenerator keyGenerator = KeyGenerator.getInstance("DESede"); keyGenerator.init(168); Key key = keyGenerator.generateKey(); return key; } //已知密钥串,获取3DES密钥 public static Key strTo3DESKey(String key) throws NoSuchAlgorithmException, InvalidKeyException, InvalidKeySpecException { Provider provider = new BouncyCastleProvider(); KeySpec keySpec = new DESedeKeySpec(Base64.decrypt(key.getBytes("utf-8")); SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("DESede", provider); SecretKey secretKey = secretKeyFactory.generateSecret(keySpec); return secretKey; } //加解密通过3des算法 public static byte[] encryptOrDecryptBy3DES(byte[] bytes, int mode, Key key) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException { //填充模式:DESede/ECB/PKCS5Padding Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding"); cipher.init(mode, key); return cipher.doFinal(bytes);}
}
导入的jar包:
<dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk16</artifactId> <version>1.46</version> </dependency>