DES对称加解密

从服务端取回来一串加密串:加密方式DES(PHP加密的)。

对称加解密,使用Hutool解密出现错误如下:

解密方法:

SymmetricCrypto des = new SymmetricCrypto(SymmetricAlgorithm.DES, key.getBytes());

byte\[\] encrypt = content.getBytes();

byte\[\] decrypt = des.decrypt(encrypt);

String decryptStr = des.decryptStr(decrypt);

错误信息1:

llegalBlockSizeException: Input length must be multiple of 8 when decrypting with padded cipher

解密方法:

/**

* 解密

* @param encryptedText 加密的密文

* @param secretKey 秘钥

* @return

* @throws Exception

*/

public static String decrypt(String encryptedText, String secretKey) throws Exception {

SecretKey key = generateKey(secretKey);

Cipher cipher = Cipher.getInstance(DES_KEY);

cipher.init(Cipher.DECRYPT_MODE, key);

byte\[\] encryptedBytes = Base64.getDecoder().decode(encryptedText);//进行Base64解码

//byte\[\] encryptedBytes = Hex.decodeHex(encryptedText);//进行十六进制解码

byte\[\] decryptedBytes = cipher.doFinal(encryptedBytes);

return new String(decryptedBytes, StandardCharsets.UTF_8);

}

错误信息2:Wrong key size

换了好几种解密方式都不能正确解密,但是此加密串在站长工具上又是可以正常解密的,折腾大半天,请教了同事,给出可解的实现:

byte\[\] ivKey=new byte8;
DES desa = new DES(Mode.CBC, Padding.PKCS5Padding,key.getBytes( "UTF-8"),ivKey);

String resulat = desa.decryptStr(content);

通过站长工具(DES在线加密解密工具 - MKLab在线工具)解密时确实设置了密钥、模式、编码,自己反复设置了这些参数仍然不好使,后来发现有个偏移向量的问题,这个偏移向量还不能乱写(正常情况下设置了偏移向量的话是需要把这个偏移向量保存下来的)~~~

具体为什么猜中是8个空的字节数组,人家说"经验",怪咱太年轻呗

相关推荐
行者全栈架构师43 分钟前
Maven dependency:tree 的 8 个高级用法
java·后端
行者全栈架构师5 小时前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端
令人头秃的代码0_05 小时前
mac(m5)平台编译openjdk
java
唐青枫1 天前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马1 天前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户3721574261351 天前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户3721574261351 天前
Java 打印 Word 文档:从基础打印到高级设置
java
用户3521802454752 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程
东坡白菜2 天前
破局全栈:一个前端开发的Java入门实战记录(1)
java·全栈
唐青枫2 天前
Java Tomcat 实战指南:从 Servlet 容器到 Spring Boot 部署
java