【Flutter】AESで暗号化・復号化する【encrypt】

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【Flutter】AESで暗号化・復号化する【encrypt】

2024-8-23 | ,

Flutterのパッケージencryptを使って文字列などをAESで暗号化・復号化したい!

概要

今回の記事ではFlutterのパッケージencryptを使って文字列などをAESで暗号化・復号化する手順を掲載する。

仕様書

環境

  • Android Studio Giraffe | 2023.2.1 Patch 2
  • Flutter 3.24.1
  • encrypt 5.0.3

手順書

インストール編とコード編の2部構成です。

インストール編

ターミナルでコマンドを実行するか

flutter pub add encrypt

pubspec.yamldependencies:に下記のような感じで追加して

dependencies:
  encrypt: ^5.0.3

ターミナルでflutter pub getする。

flutter pub get

コード編

文字列をAESで暗号化してBASE64で暗号化とそれを復号化する例。

import 'dart:convert';
import 'package:encrypt/encrypt.dart';

class Crypt {
  static final key = Key.fromUtf8('yymKFm1sC7CYbUKFEbpJTe1jpimRlBYx');
  static final iv = IV.fromUtf8("c3nc310fLq0oWRJv");

  static String encryption(String plain) {
    final encrypter = Encrypter(AES(key));
    final encrypted = encrypter.encrypt(plain, iv: iv);
    return encrypted.base64;
  }

  static String decryption(String s) {
    final encrypter = Encrypter(AES(key));
    final decrypted = encrypter.decrypt64(s, iv: iv);
    return decrypted;
  }
}

BASE64以外にもBASE16やUint8Listで出力することもできる。

  static String encryptionBase16(String plain) {
    final encrypter = Encrypter(AES(key));
    final encrypted = encrypter.encrypt(plain, iv: iv);
    return encrypted.base16;
  }

  static Uint8List encryptionUint8List(String plain) {
    final encrypter = Encrypter(AES(key));
    final encrypted = encrypter.encrypt(plain, iv: iv);
    return encrypted.bytes;
  }

まとめ(感想文)

暗号化って大事。