パッケージ、リポジトリ、アプリカテゴリを検索

パッケージ詳細v3.1.1

aes_crypt_null_safe

AES Crypt ファイル形式でファイル、プレーンテキスト、バイナリデータを暗号化/復号化するためのDart暗号化ライブラリ。すべてのプラットフォーム(Webを含む)をサポートしています。

AndroidiOSmacOSWindowsLinux
30日間ダウンロード
5320
いいね数
34
Pub ポイント
160

パッケージをインストール

flutter pub add aes_crypt_null_safe

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

AES Crypt ファイル形式を使用して、ファイル、プレーンテキスト、バイナリデータの安全な暗号化および復号化を可能にする Dart 暗号化ライブラリです。クロスプラットフォーム対応で、Android、iOS、macOS、Windows、Linux、Web環境をサポートしています。null セーフティを保証し、強力な暗号化基準に従って機密データを扱うためのシンプルな API を提供します。安全なデータ保存や送信が必要なアプリケーションに最適です。

用途

  • 機密ユーザー情報を暗号化する
  • 構成ファイルの保護
  • ファイル転送の保護
  • 暗号化された資格情報の保存
  • Webおよびモバイルアプリのデータセキュリティ

主な機能

  • AES Crypt形式のサポート
  • ヌルセーフな Dart 実装
  • クロスプラットフォーム互換性
  • ファイルおよびテキストの暗号化
  • セキュアなバイナリデータ処理

適している対象

  • データ暗号化を必要とするモバイルアプリ
  • セキュアなストレージを備えたWebアプリケーション
  • 機密情報を扱うデスクトップアプリケーション
  • 複数のプラットフォームでFlutterを使用する開発者
  • AES基準の適合を必要とするプロジェクト

注意事項

  • 鍵の管理には注意が必要です
  • 高性能なバッチ暗号化には適していません
  • AES暗号形式に制限
  • 外部の暗号化ライブラリに依存しています
  • 復号失敗時の例外を処理する必要があります

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

aes_crypt

Note

This package is a null-safe fork of the aes_crypt package, providing the same powerful AES encryption functionality with full null safety support for modern Dart and Flutter applications.

Introduction

aes_crypt is a library for Dart and Flutter developers that uses 256-bit AES algorithm to encrypt/decrypt files, plain text and binary data. It is fully compatible with the AES Crypt file format. It can be used to integrate AES Crypt functionality into your own Dart or Flutter applications. All algorithms are implemented in pure Dart and work in all platforms.

aes_crypt writes and reads version 2 of the AES Crypt file specification. Backwards compatibility with reading the version 1 is implemented but untested. Output .aes files are fully compatible with any software using the AES Crypt standard file format. This library is accompanied by clients and libraries for different operating systems and programming languages. For more information about AES Crypt and AES Crypt compatible applications for other platforms, please visit AESCrypt's official website.

Features

  • 256-bit AES encryption format.
  • File-to-file encryption and decryption.
  • Memory-to-file encryption, file-to-memory decryption.
  • Password can be in Unicode (like "密碼 パスワード пароль كلمة السر").
  • Support for asynchronous file system reading/writing.
  • Encrypted files have .aes extension which clients on other operating systems recognize.
  • Compatible software available for Windows, Linux, Mac OS, Android and iOS (https://www.aescrypt.com/download/).

Usage

In your Dart code add the following import:

import 'dart:typed_data';
import 'package:aes_crypt_null_safe/aes_crypt_null_safe.dart';

Initialization:

var crypt = AesCrypt('my cool password');

or

var crypt = AesCrypt();
crypt.setPassword('my cool password');

Optionally you can set overwrite mode for the file write operations:

// Overwrites the file if it exists.
crypt.setOverwriteMode(AesCryptOwMode.on);

// If the file exists, stops the operation and throws 'AesCryptException'
// exception with 'AesCryptExceptionType.destFileExists' type (see 
// example1.dart in 'example'  folder). This mode is set by default.
crypt.setOverwriteMode(AesCryptOwMode.warn);

// If the file exists, adds index '(1)' to its' name and tries to save. 
// If such file also exists, adds '(2)' to its name, then '(3)', etc. 
crypt.setOverwriteMode(AesCryptOwMode.rename);

Notice: All functions having 'Sync' at the end of their names are synchronous. If you need asynchronous ones, please just remove 'Sync' from the end of function name.

File encryption/decryption:

// Encrypts the file srcfile.txt and saves encrypted file under original name 
// with '.aes' extention added (srcfile.txt.aes). You can specify relative or 
// direct path to it. To save the file into current directory specify it 
// either as './srcfile.txt' or as 'srcfile.txt'.
crypt.encryptFileSync('srcfile.txt');

// Encrypts the file srcfile.txt and saves encrypted file under 
// the name enc_file.txt.aes
crypt.encryptFileSync('srcfile.txt', 'enc_file.txt.aes');

// Decrypts the file srcfile.txt.aes and saves decrypted file under 
// the name srcfile.txt
crypt.decryptFileSync('srcfile.txt.aes');

// Decrypts the file srcfile.txt.aes and saves decrypted file under 
// the name dec_file.txt
crypt.decryptFileSync('srcfile.txt.aes', 'dec_file.txt');

Text <=> file encryption/decryption:

String decryptedText;

// Plain text to be encrypted
String srcText = 'some text';

// Encrypts the text as UTF8 string and saves it into 'mytext.txt.aes' file.
crypt.encryptTextToFileSync(srcText, 'mytext.txt.aes');
// Encrypts the text as UTF16 Big Endian string and saves it 
// into 'mytext.txt.aes' file.
crypt.encryptTextToFileSync(srcText, 'mytext.txt.aes', utf16: true);
// Encrypts the text as UTF16 Little Endian string and saves it 
// into 'mytext.txt.aes' file.
crypt.encryptTextToFileSync(srcText, 'mytext.txt.aes', utf16: true, endian: Endian.little);
// Add 'bom: true' as an argument if you want to add byte order mark 
// at the beginning of the text string before the encryption. For example:
// crypt.encryptTextToFileSync(srcText, 'mytext.txt.aes', bom: true);

// Decrypts the file and interprets it based on byte order mark if it has one.
// Otherwise it will be interpreted as UTF8 text.
decryptedString = crypt.decryptTextFromFileSync('mytext.txt.aes');
// Decrypts the file and interprets it based on byte order mark if it has one.
// Otherwise it will be interpreted as UTF16 Big Endian text.
decryptedString = crypt.decryptTextFromFileSync('mytext.txt.aes', utf16: true);
// Decrypts the file and interprets it based on byte order mark if it has one.
// Otherwise it will be interpreted as UTF16 Little Endian text.
decryptedString = crypt.decryptTextFromFileSync('mytext.txt.aes', utf16: true, endian: Endian.little);

Binary data <=> file encryption/decryption:

// Binary data to be encrypted
Uint8List srcData = Uint8List.fromList([1,2,3,4,5]);

// Encrypts the data and saves it into mydata.bin.aes file.
crypt.encryptDataToFileSync(srcData, 'mydata.bin.aes');

// Decrypt the data from 'mydata.bin.aes' file
Uint8List decryptedData = crypt.decryptDataFromFileSync('mydata.bin.aes');

Binary data AES encryption/decryption:

// The encryption key. It should be 128, 192 or 256 bits long.
Uint8List key = Uint8List.fromList([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]);

// The initialization vector used in advanced cipher modes. 
// It must be 128 bits long.
Uint8List iv = Uint8List.fromList([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]);

// AES mode of operation. It can be one of the next values:
//    AesMode.ecb - ECB (Electronic Code Book)
//    AesMode.cbc - CBC (Cipher Block Chaining)
//    AesMode.cfb - CFB (Cipher Feedback)
//    AesMode.ofb - OFB (Output Feedback)
// By default the mode is AesMode.cbc
AesMode mode = AesMode.cbc; // Ok. I know it's meaningless here.

// Sets the encryption key and IV.
crypt.aesSetKeys(key, iv);
// Sets cipher mode
crypt.aesSetMode(mode);

// If you wish you can set the key, IV and cipher mode in one function.
//crypt.aesSetParams(key, iv, mode);

// The binary data to be encrypted
Uint8List srcData = Uint8List.fromList([1,2,3,4,5]);

// Encrypts the data. Padding scheme - null byte (0x00).
Uint8List encryptedData = crypt.aesEncrypt(srcData);
// Decrypts the data
Uint8List decryptedData = crypt.aesDecrypt(encryptedData);

SHA256 and HMAC-SHA256 computation:

// The source data
Uint8List srcData = Uint8List.fromList([1,2,3,4,5,6,7,8,9]);

// Computes SHA256 hash
Uint8List hash = crypt.sha256(srcData);

// Secret cryptographic key for HMAC
Uint8List key = Uint8List.fromList([1,2,3]);

// Computes HMAC-SHA256 code
Uint8List hmac = crypt.hmacSha256(key, srcData);

Acknowledgments

カテゴリー

依存関係

依存関係一覧 1 件

ソースリポジトリ

このパッケージを使用しているプロジェクト