2
我在Android和Java servlet環境中都使用了AES加密和充氣城堡實現。兩種情況下的加密部分均可用。但是,一旦我使用相同的密鑰對相同的文本進行加密,對於這兩個平臺我會得到不同的結果AES密文不同
我的意圖是在Android中進行加密並在Web環境中進行解密。
這是我爲Android AES實現完成的唯一更改。
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom sr = null;
if (android.os.Build.VERSION.SDK_INT >= JELLY_BEAN_4_2) {
sr = SecureRandom.getInstance("SHA1PRNG", "Crypto");
} else {
sr = SecureRandom.getInstance("SHA1PRNG");
}
sr.setSeed(key);
kgen.init(128, sr);
SecretKey skey = kgen.generateKey();
byte[] raw = skey.getEncoded();
上面我只是將Crypto添加到get實例中。
我使用海綿城堡實現以及我是否可以完成此操作。儘管如此,它給了我和Android一樣的結果。不知道我是否已經正確加載它。我在API級別14和17上對此進行了測試。
這導致javax.crypto.BadPaddingException:pad block損壞。
不要使用SecureRandom的做到這一點。這是錯誤的。 – kroot 2013-02-15 04:17:34
那我應該怎麼用呢? – Dilshan 2013-02-15 05:48:50
除非您發佈Android部分的加密代碼和servlet部分的解密代碼,否則我們無法看到您的錯誤。您提供的密鑰生成代碼是無關緊要的。 – 2013-02-15 08:05:22