原创

DES 解密报 Given final block not properly padded 错误

DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。

DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。

DES 加密源码参考地址(Java 通过 DES 实现加密和解密):http://blog.yoodb.com/yoodb/article/detail/266

如果编写的其他 Java DES 加密解密方式,报 javax.crypto.BadPaddingException: Given final block not properly padded 错误,具体解决方案如下:

将 Cipher cipher = Cipher.getInstance("DES"); 替换为 Cipher cipher = Cipher.getInstance("DES/ECB/NoPadding");

原因是 Cipher cipher = Cipher.getInstance("DES"); 等同于 Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); 加密时会得到16长度的字节数组

~阅读全文~人机检测~

关注下方微信公众号“Java精选”(w_z90110),回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。

Java精选专注程序员推送一些Java开发知识,包括基础知识、各大流行框架(Mybatis、Spring、Spring Boot等)、大数据技术(Storm、Hadoop、MapReduce、Spark等)、数据库(Mysql、Oracle、NoSQL等)、算法与数据结构、面试专题、面试技巧经验、职业规划以及优质开源项目等。其中一部分由小编总结整理,另一部分来源于网络上优质资源,希望对大家的学习和工作有所帮助。

评论

分享:

支付宝

微信