【发布时间】:2019-05-23 07:45:11
【问题描述】:
我正在尝试将现有的移动应用程序重新创建为颤振,但在 android 上的“PBEWithMD5AndDES”加密中苦苦挣扎,我似乎在 dart 中找不到类似的方式。
到目前为止,这是我尝试使用 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 相同的输出,以便我的后端能够解密它。
【问题讨论】:
标签: dart flutter cryptography md5 des