最近老大叫弄一個(gè)加密,給密碼加密傳給Server端.
使用 AES加密算法+Base64編碼 給用戶密碼加密;
在Android端加密是什么問題都沒有.
A.然而在Server端解密的時(shí)候卻報(bào)錯(cuò)了,如下:
java.security.NoSuchAlgorithmException:Cannot find any provider supporting AES/ECB/PKCS7PADDING
然后google一番 說將 AES/ECB/PKCS7PADDING 改成 AES/ECB/PKCS5PADDING
B.然后又報(bào)
EncryptionException:java.security.InvalidKeyException:Illegal key size
真是揪心啊!非法key大小,是說java 不支持AES-256,只可以到 AES-128.
要支持256的 點(diǎn)擊這里下載?jar包.
理一下解決的具體步驟:
一.解決 Cannot find any provider supporting AES/ECB/PKCS7PADDING 的問題.
1.在Android端的不必修改.Android一點(diǎn)問題都沒有
2.將服務(wù)端的加密工具類的 AES/ECB/PKCS7PADDING?改成 AES/ECB/PKCS5PADDING
二.解決EncryptionException:java.security.InvalidKeyException:Illegal key size 問題
1.下載 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy 包
下載之后呢,將zip解壓,可以看到如下目錄
具體替換原有的jar包:
1.1拷貝解壓包的兩個(gè)jar文件 [local_policy.jar , US_export_policy.jar] 到 java的如下目錄:
三.這樣應(yīng)該就解決了以上 的問題,如有其它問題另外再解決.
注意:以上是在 jdk1.8 的環(huán)境下的.
記錄下問題;如還有更好的方法請(qǐng)相告.
不喜勿噴!祝閱者生活愉快!