java实现3des加解密

2 篇文章 0 订阅


import java.security.Security;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;


public class DESede   
{  
      public static void main(String[] args) throws Exception {  
        //KeyGenerator提供对称密钥生成器的功能,支持各种算法  
        KeyGenerator keygen;  
        //SecretKey负责保存对称密钥   
        SecretKey deskey;     
        //Cipher负责完成加密或解密工作  
        Cipher c;
        Security.addProvider(new com.sun.crypto.provider.SunJCE());
        
        //实例化支持3DES算法的密钥生成器,算法名称用DESede  
        keygen = KeyGenerator.getInstance("DESede");
        //生成密钥  
        deskey = keygen.generateKey();  
        //生成Cipher对象,指定其支持3DES算法  
        c = Cipher.getInstance("DESede");                   
           
        String msg = "你好!hello!";  
        System.out.println("明文是:" + msg);  
          
        //根据密钥,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式  
        c.init(Cipher.ENCRYPT_MODE, deskey);  
        byte[] src = msg.getBytes();  
        //加密,结果保存进enc  
        byte[] enc = c.doFinal(src);
        System.out.println("密文是:" + new String(enc));   
           
        //根据密钥,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式  
        c.init(Cipher.DECRYPT_MODE, deskey);  
        //解密,结果保存进dec  
        byte[] dec = c.doFinal(enc);  
        System.out.println("解密后的结果是:"+ new String(dec));   
      }  
}  


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java实现3DES加密解密可以使用JCEJava Cryptography Extension)提供的API。下面是一个简单的示例代码: ```java import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESedeKeySpec; import java.nio.charset.StandardCharsets; import java.security.spec.KeySpec; public class TripleDesExample { public static void main(String[] args) throws Exception { String plainText = "Hello, world!"; String secretKey = "0123456789ABCDEFGHIGKLMN"; byte[] encryptedBytes = encrypt(plainText, secretKey); String encryptedText = new String(encryptedBytes, StandardCharsets.UTF_8); System.out.println("Encrypted text: " + encryptedText); byte[] decryptedBytes = decrypt(encryptedBytes, secretKey); String decryptedText = new String(decryptedBytes, StandardCharsets.UTF_8); System.out.println("Decrypted text: " + decryptedText); } public static byte[] encrypt(String plainText, String secretKey) throws Exception { byte[] plainBytes = plainText.getBytes(StandardCharsets.UTF_8); byte[] keyBytes = secretKey.getBytes(StandardCharsets.UTF_8); KeySpec keySpec = new DESedeKeySpec(keyBytes); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede"); SecretKey key = keyFactory.generateSecret(keySpec); Cipher cipher = Cipher.getInstance("DESede"); cipher.init(Cipher.ENCRYPT_MODE, key); return cipher.doFinal(plainBytes); } public static byte[] decrypt(byte[] encryptedBytes, String secretKey) throws Exception { byte[] keyBytes = secretKey.getBytes(StandardCharsets.UTF_8); KeySpec keySpec = new DESedeKeySpec(keyBytes); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede"); SecretKey key = keyFactory.generateSecret(keySpec); Cipher cipher = Cipher.getInstance("DESede"); cipher.init(Cipher.DECRYPT_MODE, key); return cipher.doFinal(encryptedBytes); } } ``` 在上面的示例代码中,我们使用了`DESede`算法实现3DES加密解密。需要注意的是,密钥的长度必须是24个字节(即192位),因此我们在示例中使用了一个24个字符的字符串作为密钥。在实际应用中,我们可以使用更加安全的方式生成密钥,例如使用`KeyGenerator`类生成密钥。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值