原创

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),回复关键字领取资料:如HadoopDubboCAS源码等等,免费领取资料视频和项目。 

涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、Java、Python、Redis缓存、Spring源码、各大主流框架、Web开发、大数据技术、Storm、Hadoop、MapReduce、Spark、elasticsearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非关系型数据库、运维等。

评论

分享:

支付宝

微信