当前位置: 首页 > news >正文

DES算法,JAVA,遇到的问题

(1)使用Based64编码时出现的问题。

  java.lang.IllegalArgumentException

  这中情况出现在解密时,主要原因是based64加密时用了sun的内部包sun.misc,这是sun公司专门提供给内部使用的API,所以应该换其他的包试试,如下:

  import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;

  import org.apache.commons.codec.binary.Based64;

   但是第一个类,该类不属于JDK标准库范畴,但在JDK中包含了该类,可以直接使用。但是在eclipse中直接使用却找不到该类。可以在eclipse

上用如下方法解决

Properties-->Java Bulid Path-> Libraries -->JRESystem Library-->Access rules -->双击-->Type Access Rules,在Accessible中添加accessible,下面填上**点击确定

具体请看:https://www.cnblogs.com/momoli/p/10154335.html

(2)解决问题(1)之后,发现出现如下问题:

  javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when decrypting with padded cipher

这是因为DES的填充模式不同,建议使用ECB模式,同时如果使用的是NoPadding填充方式也会出现上述问题,建议使用PKCS5Padding填充方式,这个就不需要输入的源数据为8的倍数了。

(3)可是使用了"DES/ECB/PKCS5Padding",还是出现了上述问题,最后绞尽脑汁,才发现自己加密时是先加密,然后用的BASED64编码了,解密的时候先解密,然后再解码,这种方式错误了,解密时应该先解码再解密,可以防止未解码而导致源数据出现的问题,

(4)最后检查代码时,发现中文加密后,进行解密时,解出的明文是乱码,原来我加密时用了data.getBytes("utf-8"),而解密时,我用了return new String(Base64.encode(cipher.doFinal(data))),无法以相同的方式将字节数组转化为字符串,因此我将加密解密字符串与字节数组的转化方式设为默认,也就是不写,然后就成功了。

 

转载于:https://www.cnblogs.com/momoli/p/10154130.html

相关文章:

  • 服务器发送数据到另一个服务器上中文出现乱码
  • REST 规范
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 能够在Linux系统中运行的5款大型耐玩游戏
  • ASP.NET Core 入门教程 1、使用ASP.NET Core 构建第一个Web应用
  • 第二周总结
  • THUSC 2017 D1T2 杜老师
  • JAVA企业级应用TOMCAT实战
  • 数据可视化之 Sankey 桑基图的实现
  • 前端面试题总结
  • VUE es6技巧写法(持续更新中~~~)
  • 用jquery写贪吃蛇
  • 解析Vue-router相关基础知识及工作原理
  • 订单的业务流程
  • 序列化与反序列化
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 2017年终总结、随想
  • angular2开源库收集
  • CentOS 7 修改主机名
  • Consul Config 使用Git做版本控制的实现
  • Cumulo 的 ClojureScript 模块已经成型
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Octave 入门
  • oschina
  • Protobuf3语言指南
  • tweak 支持第三方库
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 如何胜任知名企业的商业数据分析师?
  • 主流的CSS水平和垂直居中技术大全
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (三)终结任务
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)http协议
  • .net core控制台应用程序初识
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .net反编译工具
  • .NET下ASPX编程的几个小问题
  • @RequestMapping 的作用是什么?
  • []常用AT命令解释()
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [BZOJ1008][HNOI2008]越狱
  • [CTF]php is_numeric绕过
  • [CVPR2021]Birds of a Feather: Capturing Avian Shape Models from Images
  • [error] 17755#0: *58522 readv() failed (104: Connection reset by peer) while reading upstream
  • [ERROR]-Error: failure: repodata/filelists.xml.gz from addons: [Errno 256] No more mirrors to try.
  • [HeMIM]Cl,[AeMIM]Br,[CeEIM]Cl,([HO-PECH-MIM]Cl,[HOOC-PECH-MIM]Cl改性酚醛树脂
  • [iOS开发]事件处理与响应者链
  • [ISITDTU 2019]EasyPHP
  • [JS入门到进阶] 7条关于 async await 的使用口诀,新学 async await?背10遍,以后要考!快收藏
  • [KMP求最小循环节][HDU1358][Period]
  • [linux time命令学习篇] time 统计命令执行的时间