Использую android 2.3
| Код | private static byte[] getRawKey(String seed) throws Exception { KeyGenerator keygen = KeyGenerator.getInstance("AES"); SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); random.setSeed(seed.getBytes()); keygen.init(128, random); SecretKey skey = keygen.generateKey(); return skey.getEncoded(); } private static final String encrypt(String data, String skey) throws Exception { SecretKeySpec keySpec = new SecretKeySpec(getRawKey(skey), "AES"); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.ENCRYPT_MODE, keySpec); byte[] buffer = cipher.doFinal(data.getBytes()); return Base64.encodeToString(buffer, Base64.DEFAULT); } private static final String decrypt(String data, String skey) throws Exception { SecretKeySpec keySpec = new SecretKeySpec(getRawKey(skey), "AES"); Cipher decipher = Cipher.getInstance("AES"); decipher.init(Cipher.DECRYPT_MODE, keySpec); byte[] buffer = decipher.doFinal(Base64.decode(data, Base64.DEFAULT)); return new String(buffer); }
|
так вот на одном мобильнике encrypt/decrypt работает, а вот если на одном зашифровать, а на другом использую этот-же код расшифровываю на том же ключе, то результат отрицательный.
Начал разбираться - getRawKey генерирует различные последовательности на разных телефонах. Как так может быть на одном и том же ключе ? |