如何使用 Flutter 和 Dart 执行文件加密

coo*_*z71 6 encryption dart flutter e2e-encryption

我不知道在这里问我的问题是否正确。我只需要为我正在尝试构建的应用程序进行可行性研究。我选择 Flutter 是因为我可以快速创建移动应用程序。

我的应用程序将以音频文件的形式存储语音消息。它可以是 mp3 或音频格式。

为了使其只能由接收者读取,我需要使用 AES 或 e2e 加密来加密文件。

我需要知道是否可以在我的 Flutter 应用程序中使用 Dart 加密文件。如果可能,我想获得有用的资源。

我试图搜索这个主题,但我只能找到有关加密字符串或文本文件的文章。

Hos*_*ese 11

终于找到东西了。我尝试了多种选择,包括 encrypt 包,但都是死胡同。我终于找到了这个包它可以使用 AES 加密文件,你只需要文件的路径。这是有据可查的。我相信最好创建一个类并添加加密和解密函数,就像我在下面所做的那样。

import 'dart:io';
import 'package:aes_crypt/aes_crypt.dart';

class EncryptData {
  static String encrypt_file(String path) {
    AesCrypt crypt = AesCrypt();
    crypt.setOverwriteMode(AesCryptOwMode.on);
    crypt.setPassword('my cool password');
    String encFilepath;
    try {
      encFilepath = crypt.encryptFileSync(path);
      print('The encryption has been completed successfully.');
      print('Encrypted file: $encFilepath');
    } catch (e) {
      if (e.type == AesCryptExceptionType.destFileExists) {
        print('The encryption has been completed unsuccessfully.');
        print(e.message);
      }
      else{
        return 'ERROR';
      }
    }
    return encFilepath;
  }

  static String decrypt_file(String path) {
    AesCrypt crypt = AesCrypt();
    crypt.setOverwriteMode(AesCryptOwMode.on);
    crypt.setPassword('my cool password');
    String decFilepath;
    try {
      decFilepath = crypt.decryptFileSync(path);
      print('The decryption has been completed successfully.');
      print('Decrypted file 1: $decFilepath');
      print('File content: ' + File(decFilepath).path);
    } catch (e) {
      if (e.type == AesCryptExceptionType.destFileExists) {
        print('The decryption has been completed unsuccessfully.');
        print(e.message);
      }
      else{
        return 'ERROR';
      }
    }
    return decFilepath;
  }
}


Run Code Online (Sandbox Code Playgroud)

现在你可以像这样使用它

encrypted_file_path = EncryptData.encrypt_file('your/file/path');
Run Code Online (Sandbox Code Playgroud)

  • 使用这种技术,您需要将解密的文件存储在内存中。这将允许任何人复制它,或使用其他音乐播放器阅读。我正在寻找一种逐字节解密并在媒体播放器上随时随地阅读的方法 (2认同)