#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 для каждого шифрования.