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

标签 encryption flutter dart e2e-encryption

我不知道在这里问我的问题是否合适。我只需要为我要构建的应用程序进行可行性研究。我之所以选择Flutter,是因为我允许快速创建移动应用程序。

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

为了使其仅可由接收者读取,我需要使用可能是AES或e2e加密的文件进行加密。

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

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

最佳答案

终于找到了东西。我尝试了包括加密包在内的多个选项,但都无济于事。我终于发现this package它可以使用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;
  }
}



现在您可以像
encrypted_file_path = EncryptData.encrypt_file('your/file/path');

关于encryption - 如何使用Flutter和Dart执行文件加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58324907/

相关文章:

list - 在Dart中返回[…list]有什么用?

Android:生成指纹保护 key 后如何立即进行加密?

c++ - 使用 c++/openssl 解密带有密码的文件

c# - 需要在 Javascript、C# 中实现相同的字符串哈希

firebase - 我必须从 Firebase 下载图像才能显示吗?

flutter - 错误: The argument type 'Null Function(DateTime, List<dynamic>)' can't be assigned to the parameter

android - 任务 ':flutter_twitter:verifyReleaseResources' 执行失败

php - 使用 phpseclib AES 加密字符串

flutter 错误未定义类 'RenderContext'

flutter - 将int内置到内置函数中不会改变骰子的图像,但是当将其移到@override之上时,骰子图像会发生变化。为什么?