PR

[Flutter]文字列のハッシュ値をSHA-256やMD5を使って取得できるプラグイン

Flutter

はじめに

先日、Flutterで開発していた時に、文字列のハッシュ値を使わなければいけないことになりました。

なので、今回はFlutterでどうやったらSHA-256MD5が使えるかどうか調べてみました。

環境

  • Flutter 2.2.3
  • crypto 3.0.1

実装方法

プラグインの最新バージョンを確認

下記のサイトにアクセスし、バージョンを確認します。

crypto | Dart Package
Implementations of SHA, MD5, and HMAC cryptographic functions.

記事作成の時点では3.0.1が最新バージョンでした。

プラグインのインストール

pubspec.yamldependenciesに「crypto: ^3.0.1」を追記します。

または常に最新版を使う設定の「crypto: any」を追記します。

environment:
  sdk: ">=2.12.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter


  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^1.0.2
  crypto: ^3.0.1

その後、プロジェクト配下で「flutter pub get」コマンドを実行

よくわからない場合はAndroid Studiopubspec.yamlファイルを開くと右上に「Pub get」ボタンがあるのでそれを押して下さい。

サンプルコードと動作確認

「abc」という文字列をSHA-256とMD5を使ってハッシュ化させようと思います。

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

void test() {
  // SHA-256の場合.
  var bytes1 = utf8.encode('abc');
  var digest1 = sha256.convert(bytes1);
  print('SHA-256 : ${digest1.toString()}');
  // SHA-256 : ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

  // MD5の場合.
  var bytes2 = utf8.encode('abc');
  var digest2 = md5.convert(bytes2);
  print('MD5 : ${digest2.toString()}');
  // MD5 : 900150983cd24fb0d6963f7d28e17f72
}

ハッシュ値が合っているか、それぞれターミナルで確認してみます。

// SHA-256の場合.
% echo -n "abc" | shasum -a 256
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad  -

// MD5の場合.
% echo -n "abc" | md5
900150983cd24fb0d6963f7d28e17f72

SHA-256とMD5がFlutter上の値とターミナルの値で同じになりました。

このプラグインの暗号化の対応状況

またこのプラグインは以下の暗号化に対応しているそうです。

  • SHA-1
  • SHA-224
  • SHA-256
  • SHA-384
  • SHA-512
  • SHA-512/224
  • SHA-512/256
  • MD5
  • HMAC (i.e. HMAC-MD5, HMAC-SHA1, HMAC-SHA256)

さいごに

頻繁につかわない技術は忘れがちなのは自分だけですか?

おすすめ参考書

コメント

タイトルとURLをコピーしました