flutter - (AESMode.ctr)模式下的文件解密显示异常无法使用飞镖中的编码“utf-8”解码数据?
问题描述
使用模式解码视频文件aes-ctr
时出现如下错误,
Unhandled Exception: FileSystemException: Failed to decode data using encoding 'utf-8'
使用 ffmpeg 加密文件:
ffmpeg -i samplevideo.mp4 -vcodec copy -acodec copy -encryption_scheme cenc-aes-ctr -encryption_key 76a6c65c5ea762046bd749a2e632ccbb -encryption_kid a7e61c373e219033c21091fa607bf3b8 enc_v1_file.mp4
使用 Dart 解码视频文件:
Future<String> decryptFile(filePath) async {
// filePath - Local encrypted file path
var encodedKey = 'NzZhNmM2NWM1ZWE3NjIwNDZiZDc0OWEyZTYzMmNjYmI=';
var encodedIv = 'YTdlNjFjMzczZTIxOTAzM2MyMTA5MWZhNjA3YmYzYjg=';
var encryptedBase64EncodedString = new File(filePath).readAsStringSync();
var decoded = base64.decode(encryptedBase64EncodedString); // Error in this line
final key1 = enc.Key.fromBase64(encodedKey);
final iv = enc.IV.fromBase64(encodedIv);
final encrypter = enc.Encrypter(enc.AES(key1, mode: enc.AESMode.ctr));
final decrypted = encrypter.decryptBytes(enc.Encrypted(decoded), iv: iv);
final filename = '${p.basenameWithoutExtension(filePath)}.mp4';
final directoryName = p.dirname(filePath);
final newFilePath = p.join(directoryName, filename);
var newFile = new File(newFilePath);
await newFile.writeAsBytes(decrypted);
return newFilePath;
}
解决方案
推荐阅读
- c# - Xamarin.Android:动态 AutoCompleteTextView
- python - 在 python3 模块中重新打包或包装导入的错误或异常类型
- vba - 如何搜索完全匹配。在此搜索代码中,如果有两个名称,如 Ankur surana 和 Ankur,则这两个值都已排序
- python - 画布中基于图片和按钮的 RPG,而非文本
- css - HighCharts Angular - 标题边距不起作用
- postgresql - spark是否支持以下级联查询?
- microsoft-graph-api - 团队/组的邮件昵称 - 允许的字符或正则表达式
- angular - 垫表不显示任何数据,显示白条
- tensorflow - Tensorflow model.fit 在 while 循环中崩溃
- php - 使用 Symfony 5 中的 FOSRestBundle 转换单个属性以进行响应