skyADMIN

AES-128-CBC Java解密

易班授权回调的时候返回的是一个AES-128-CBC对称加密的串,解密可以得到一个json数组。官方只提供了PHP的解密算法,看着很简单,没想到改写成Java的这么坑。

PHP版:

CFC5123A-53B0-4D19-A0FD-46DA9F8CD4AE

加解密算法让我自己写估计得很久,查现成的呗,很多,结果都挺复杂的,没有像这个PHP一样简洁的,无所谓,有就行,单开一个util包把它们放进去。

但是全报错了。因为大家的密钥基本都是16位的,偏偏易班说密钥是appsecret,那东西有32位长。

一晚上没折腾出来,第二天重新尝试,看到最靠谱的一个错误信息是“illegal key size”。长度非法的密钥。Google一下才发现这是个坑啊,缺个东西:Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files。英文不好,应该是Java在密码学方面的扩展包,很小的东西,大概0.1M,去替换掉JDK里的两个文件,就可以了。

最后,我用的解密算法是这个地方找的:https://github.com/serpro/Android-PHP-Encrypt-Decrypt

JCE在oracle官网就有下的。剩下的事情就比较简单了。

码字很辛苦,转载请注明来自环宇博客《AES-128-CBC Java解密》

评论