Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter (AESMode.ctr)模式下的文件解密显示异常,无法使用编码对数据进行解码';utf-8';用飞镖?_Flutter_Dart_Ffmpeg_Aes - Fatal编程技术网

Flutter (AESMode.ctr)模式下的文件解密显示异常,无法使用编码对数据进行解码';utf-8';用飞镖?

Flutter (AESMode.ctr)模式下的文件解密显示异常,无法使用编码对数据进行解码';utf-8';用飞镖?,flutter,dart,ffmpeg,aes,Flutter,Dart,Ffmpeg,Aes,在使用aes ctr模式解码视频文件时,我遇到如下错误: 未处理的异常:FileSystemException:无法使用编码“utf-8”对数据进行解码。 用于加密文件的ffmpeg: ffmpeg-i samplevideo.mp4-vcodec copy-acodec copy-encryption\u scheme cenc aes ctr-encryption\u key 76A6C65C5EA762046BD749A2E632CBB-encryption\u kid a7e61c373

在使用aes ctr模式解码视频文件时,我遇到如下错误:

未处理的异常:FileSystemException:无法使用编码“utf-8”对数据进行解码。

用于加密文件的ffmpeg:

ffmpeg-i samplevideo.mp4-vcodec copy-acodec copy-encryption\u scheme cenc aes ctr-encryption\u key 76A6C65C5EA762046BD749A2E632CBB-encryption\u kid a7e61c373e219033c21091fa607bf3b8 enc v1\u 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;
}
未来解密文件(文件路径)异步{
//filePath-本地加密文件路径
var encodedKey='nzzhnmm2nwm1zwe3njiwndzizdc0oweyzmtnjymi=';
var encodedIv='YTdlNjFjMzczZTIxOTAzM2MyMTA5MWZhNjA3YmYzYjg=';
var encryptedBase64EncodedString=新文件(filePath).readAsStringSync();
var decoded=base64.decode(encryptedBase64EncodedString);//此行出错
最终键1=enc.Key.fromBase64(encodedKey);
最终iv=enc.iv.fromBase64(encodedIv);
最终加密机=enc.encrypter(enc.AES(键1,模式:enc.AESMode.ctr));
最终解密=encrypter.decryptBytes(加密(解码),iv:iv);
最终文件名=“${p.basenameWithoutExtension(filePath)}.mp4”;
final directoryName=p.dirname(文件路径);
final newFilePath=p.join(directoryName,filename);
var newFile=新文件(newFilePath);
等待newFile.writeAsBytes(解密);
返回newFilePath;
}

首先,您尝试以文本模式读取二进制文件,然后假设内容是Base64(不是),因此这肯定会失败。第二,你想做什么?CENC使用示例加密,它不加密整个文件。