解决java内置aes加密出现Given final block not properly padded异常的问题

今天使用java的aes解密的时候出现了Given final block not properly padded的错误,如果你的数据不是用java自带的接口进行加密的密文,解密时可能出现这个问题,这是因为加解密除了算法外还有多种模式,比如ECB, CBC, CTR, CFB, OFB这些,其中最简单的是ecb,也叫做密码本,就是直接用秘钥套入算法,符合我们密码对密文的常规思维,速度快实现也简单,但这种方式密文里留了太多规律,容易遭到明文攻击,被反向破解,密级敏感或数据量大的时候最好别用,其他的几种模式更为安全,但是都需要附加额外的密码参数,使用更为复杂,java默认的aes加密提供的方式可能并不是ecb,如果你用ecb方式加密的数据,此时用java默认的aes解密肯定会出错
说了这么多,怎么解决呢,很简单

Cipher cipher = Cipher.getInstance("AES");

替换为,指定ecb即可

Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
上一篇:【ACM-OJ】《Til the Cows Come Home》C语言


下一篇:洛谷-P2639 [USACO09OCT]Bessie's Weight Problem G