API version 1

- ‐

Encryptor

データの暗号化を行うクラスです。

暗号化したデータを元に戻すためには Decryptor クラスを使用します。

暗号化は、暗号化アルゴリズム・パディング方式・暗号利用モードの3つを組み合わせて指定します。 したがって、BlowFish以外にPKCS#5パディング方式を指定することも可能です。

定数は暗号化アルゴリズム、パディング方式、暗号利用モードで各1種類ずつを組み合わせられます。 なお、未指定の場合は、それぞれ「BlowFish」「独自パディング方式」「ECBモード」となります。

例:BlowFish・PKCS#5パディング・ECBモードを指定する
  Encryptor.CALG_BLOWFISH + Encryptor.CPAD_PKCS5 + Encryptor.MODE_ECB

暗号利用モードはECBモードとCBCモードの2つのモードが存在します。通常はECBモードが選択されます。 ECBモードでは、暗号化対象のデータを細かく区切ってそれごとに暗号化しているため、 暗号化対象のデータに規則的なパターンがあると、そのパターンが暗号化結果にもある程度残ってしまいます。 ECBモードの代わりに、暗号化結果のデータにパターンが残らないより強固なセキュリティを持つCBCモードが選択できます。

このクラスは readableオブジェクト、writableオブジェクト として使用することが可能です。

強度の高い暗号鍵と初期化ベクトルを作るには

暗号化を行う際「パスワード(パスフレーズ)」と呼ばれる文字列を指定することが一般的です。

ですが、実際に暗号化および復号を行う際は「暗号鍵」および「初期化ベクトル」と呼ばれるものが用いられます。

これらは混同されやすいですが、性質が異なるものです。

  • パスワード(パスフレーズ)

    • 通常はユーザが入力する可読文字列で、英字、数字、記号から構成されます。

    • パスワード長はシステムに寄りますが可変長であることが多いです。

  • 暗号鍵 (key)

    • 暗号化に用いる鍵で、バイナリデータです。

    • 鍵長は暗号アルゴリズム毎に規定されている固定値です。

    • 一般的にはパスワードの文字列に対してハッシュを取ったり長さを切り詰める等の操作を行い生成されます。

  • 初期化ベクトル (Initialization Vector、IV)

    • 主にCBCモードを用いて暗号化する際に用いられるバイナリ値です。

    • 同じ暗号鍵で異なる出力を得るために用いられます。

    • ベクトル長はアルゴリズム毎に規定されている固定値です。

暗号化の効果を最大化するためにも、適切な暗号化アルゴリズム、ブロックモード、暗号化鍵、初期化ベクトルなどを選定してください。

なお、Biz/Browserで利用できる暗号アルゴリズムに対応する暗号鍵長および初期化ベクトル長は下記の通りです。

暗号化アルゴリズム

暗号鍵長

初期化ベクトル長

CALG_BLOWFISH

可変長

8バイト

CALG_3DES_EEE

24バイト

8バイト

CALG_3DES_EDE

16バイト

8バイト

CALG_AES_128

16バイト

16バイト

CALG_AES_192

24バイト

16バイト

CALG_AES_256

32バイト

16バイト

例外

このクラスはreadメソッド、writeメソッド呼び出し時に下記の例外が発生することがあります。

識別子

説明

CRS::Common::Convert::Security-1:2

暗号化操作に失敗しました