1。JAVA关于AES的代码很多,但是找到能跟OpenSSL配对的很少。
这是加密的程序,解密程序也差不多
SecretKeySpec secretKeySpec = new SecretKeySpec(password, "AES");
IvParameterSpec paramSpec = new IvParameterSpec(ivi);
Cipher ecipher = Cipher.getInstance("AES/CBC/NOPADDING");
ecipher.init(Cipher.ENCRYPT_MODE, secretKeySpec,paramSpec);
问题
1.网上很多JAVA AES算法,很多都用SecureRandom,如果你的代码中出现了SecureRandom这个东西,那么恭喜你,
你再也不能用C解出来了。
2.跟C约定相同的AES算法,AES实现有四种,像CBC/ECB/CFB/OFB
3.约定相同的Padding
java支持的Padding方式有三种NoPadding/PKCS5Padding/
每种的补齐方式是不一样的,这跟OpenSSL是有区别的,OpenSSL中补齐的方式是/0,但是JAVA中没有这一种方式。
所以方便起见,就跟C约定好补齐
附其它资料:
http://blog.turbidsoul.me/posts/opensslhe-java-aessuan-fa-de-de-wen-ti.html