TripleDES CBC PKCS7PADDING 加密方式

此次使用的是CBC工作模式 - PKCS7PADDING填充格式
JAVA原始解密只有PKCS5PADDDING 需要引入第三方包
一下是GRADLE项目中的例子
 
 
首先引入第三包 刷新一下GRADLE依赖
implementation('org.bouncycastle:bcprov-ext-jdk15on:1.64')

 

 

复制代码
import java.security.Key;
import java.security.MessageDigest;
import java.util.Map;

import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import javax.crypto.spec.IvParameterSpec;

import org.apache.commons.codec.binary.Hex;
import org.springframework.util.Base64Utils;
复制代码

 

 

复制代码
 //原始文本
  String plainText = "山本你说句话,加密到底行不行";
  //密钥
  String secretKey = "ehahahTomCat#7=*";
  //向量
  String iv = "TomTaw#7";
  //字符集
  String encoding = "UTF-8";
  
  //注册一下上面引入的第三方解密方式 下面就可以无缝使用了
  Security.addProvider(new BouncyCastleProvider());

  try{
      Key deskey = null;
      //16位密钥转24位密钥
      byte[] keyBytes = secretKey.getBytes();
      if (keyBytes.length == 16) {
          byte[] tmpKey = new byte[24];
          System.arraycopy(keyBytes, 0, tmpKey, 0, 16);
          System.arraycopy(keyBytes, 0, tmpKey, 16, 8);
          keyBytes = tmpKey;
      }

      DESedeKeySpec spec = new DESedeKeySpec(keyBytes);
      SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede");
      deskey = keyfactory.generateSecret(spec);

      Cipher cipher = Cipher.getInstance("desede/CBC/PKCS7Padding");
      IvParameterSpec ips = new IvParameterSpec(iv.getBytes());
      cipher.init(Cipher.ENCRYPT_MODE, deskey, ips);
      byte[] encryptData = cipher.doFinal(plainText.getBytes(encoding));
    
      byte[] bb =  Base64Utils.encode(encryptData);

      String result = new String(bb,"UTF-8");

      System.out.println(result);

      return result;
  }catch(Exception e){
      e.printStackTrace();
  }
复制代码
 
这段代码是把传入的原始文本 用TripleDES加密再Base64编码,要原始数值提前return就完事了
 
我程序跑是正常的 但是和需求上给的例子的加密结果不一样,也不知道哪里有问题 真的J8
 
先吧解决方案挂上来 有人需要自己看看 要是发现有不多的地方也请多多指点

 

posted @   幻龙九头  阅读(387)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示