Я новичок в шифровании
Проблема:
Мне дан набор зашифрованных строк, и мне нужно их расшифровать, чтобы показать пользователю мобильного клиента. Для Android он отлично расшифровывает, и я использую следующий метод «расшифровать». Для iOS у меня много проблем с переводом этого java-метода на Objective C. Я попытался использовать NSData + CommonCrypto, RNCryptor. Оба они вернут некоторые расшифрованные данные, однако при преобразовании расшифрованных данных в строку они всегда будут нулевыми.
Цель:
Переведите метод java decrypt в Objective C (расшифруйте строку в Objective C с помощью секретного ключа)
Приветствуются любые предложения, комментарии, мнения, псевдокод. Благодарность
Метод расшифровки Android
public static String decrypt(String message){
try {
Cipher c = Cipher.getInstance("AES");
SecretKeySpec key = new SecretKeySpec(secrKey.getBytes(), "AES");
c.init(Cipher.DECRYPT_MODE, key);
byte[] decordedValue = Base64.decode(message.getBytes(), Base64.DEFAULT);
byte[] decValue = c.doFinal(decordedValue);
String decryptedValue = new String(decValue);
String decoded = new String(Base64.decode(decryptedValue, Base64.DEFAULT));
return decoded;
}catch(Exception e){
return null;
}
}
getInstance
должен предоставлять всю необходимую информацию и не полагаться на значения по умолчанию. например: AES / CBC / PKCS5Padding (128), AES / ECB / NoPadding (128) или некоторые другие комбинации. Со спецификацией AES я бы предположил: режим ECB (действительно плохой выбор), PKCS5Padding и длина ключа на основе предоставленного ключа с добавлением нуля по мере необходимости. См. Документы Class Cipher. - person zaph   schedule 06.06.2015