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个空的字节数组,人家说"经验",怪咱太年轻呗

相关推荐
2301_780789663 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
学长毕设4 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
步行cgn5 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
龙亘川5 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
金銀銅鐵5 小时前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
秋天的怀念_David5 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Raas1005 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
niucloud-admin6 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php
霸道流氓气质7 小时前
智能客服组件:分层意图识别、RAG Advisor 与人工转接状态机的 Vue3 + Spring AI 生产级实战
java·人工智能·spring
captain3767 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis