Я пытаюсь воссоздать существующие мобильные приложения во флаттере, но борюсь с шифрованием "PBEWithMD5AndDES" на Android, которое, похоже, не может найти аналогичный способ в дротике.
Это то, чего я пытался добиться с помощью библиотек Flutter_Des.dart, Password_Hash.dart и Crypto.dart, но все еще не могу получить тот же вывод.
encryptPassword(String keyStr, String passwordStr) async {
if (keyStr.length == 0 || passwordStr.length == 0) {
return "";
}
var generator = new PBKDF2(hashAlgorithm: md5);
String saltStr = generateSaltBase64String();
var hash = generator.generateBase64Key(keyStr, saltStr, round, keyLength);
var encryptBase64 = await FlutterDes.encryptToBase64(passwordStr, hash.toString());
return encryptBase64;
}
Ниже приведено то, что у меня сейчас есть на Android.
KeySpec keySpec = new PBEKeySpec(str.toCharArray(), salt, iterationCount);
SecretKey key = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(keySpec);
AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount);
ecipher = Cipher.getInstance("PBEWithMD5AndDES");
ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
byte[] utf8 = password.getBytes("UTF8");
byte[] enc = ecipher.doFinal(utf8);
enc = Base64.encode(enc, Base64.DEFAULT);
return new String(enc);
Я ожидаю того же вывода, что и для Android, поэтому мой бэкэнд сможет его расшифровать.