这个问题可是让我头疼了好久,并试了很多方法在此推荐两种方法:
1.SecretKeySpec skeySpec = new SecretKeySpec(getRawKey(key), “AES”);
private static byte[] getRawKey(byte[] seed) throws Exception { KeyGenerator kgen = KeyGenerator.getInstance(“AES”); SecureRandom sr = SecureRandom.getInstance(“SHA1PRNG”, “Crypto”); sr.setSeed(seed); kgen.init(128, sr); // 192 and 256 bits may not be available SecretKey skey = kgen.generateKey(); byte[] raw = skey.getEncoded(); return raw; }
红色的部分为注意项,不能写为SecureRandom sr = SecureRandom.getInstance(“SHA1PRNG”);
2.Cipher cipher = Cipher.getInstance(“AES”); ---------4.3以上有bug
修改为
Cipher cipher = Cipher.getInstance(“AES/ECB/ZeroBytePadding”);