Шифрование AES в flutter Android

#android #flutter #encryption #aes #rijndael

#Android #flutter #шифрование #aes #rijndael

Вопрос:

вот мой код, который был написан на java в Android для шифрования — я использую шифрование AES с использованием закрытого ключа длиной 256 и заполнения PKCS5.

Пожалуйста, дайте мне знать, как я могу использовать тот же метод шифрования и в flutter. Я также использовал PointyCastle , но у меня это не сработало.

 public AES() {
   cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
   _key = new byte[32]; //256 bit key space
   _iv = new byte[16]; //128 bit IV
}
 

Я хочу добиться шифрования в flutter, используя тот же метод шифрования. пожалуйста, помогите мне добиться этого в flutter.

Ответ №1:

Вот как я реализовал это в flutter для шифрования строки.

Создайте файл dart crypto.dart и скопируйте / вставьте содержимое ниже.

 import 'package:encrypt/encrypt.dart';

final aesKey = '<your key';

String encryptData(final String data)
{
  final key = Key.fromUtf8(aesKey);
  final iv = IV.fromUtf8(aesKey);
  final aesEncrypter = Encrypter(AES(key, mode: AESMode.cbc));
  
  final encrypted = aesEncrypter.encrypt(data, iv: iv);
  return encrypted.base64;
}

// Decrypt data
String decryptData(final String encrypted)
{
  final key = Key.fromUtf8(aesKey);
  final iv = IV.fromUtf8(aesKey);
  final aesEncrypter = Encrypter(AES(key, mode: AESMode.cbc));

  final data = aesEncrypter.decrypt64(encrypted, iv: iv);
  return data;
}
 

Затем вы можете импортировать файл crypt.dart и вызвать соответствующие методы, необходимые для шифрования / дешифрования.

Комментарии:

1. Предупреждение о безопасности : ваша функция шифрования НЕБЕЗОПАСНА , поскольку она использует ключ для IV. Во-вторых: эта процедура завершится неудачей при использовании ключа длиной 32 байта для AES-256. Рекомендуется использовать случайно сгенерированный IV для каждого шифрования.