メッセージ保存の暗号化方法

Eclairにて、メッセージ内容をローカルに保存する際、暗号化するよう指定している場合、どのように暗号化をしているかを説明します。
なお、アドレス帳の暗号化保存は、メッセージ保存の場合の「先頭にCRLFを挿入」がないだけです。
(暗号化保存の指定は、「全般的な設定」ダイアログの「保存の暗号化」ページ、および、 「メッセージフォルダのプロパティ」ダイアログの「保存の暗号化」ページで行います。)

暗号化手順

  1. パスワードにMD5を行い、16バイトのバイト列に変換する。→パスワード2とする。
  2. データの先頭にデータバイト数4バイトを挿入する。→データ2とする。
  3. データ2の末尾にゴミを付けて8の倍数のバイト数にする。→データ3とする。
  4. データ3をパスワード2でBlowfish暗号化する。→データ4とする。
  5. データ4の先頭にCRLFを挿入する。(メッセージを暗号化したまま表示しようとしたとき暗号文を表示させるため。)

復号手順

  1. パスワードにMD5を行い、16バイトのバイト列に変換する。→パスワード2とする。
  2. データの先頭のCRLFを取り除く。→データ2とする。
  3. データ2をパスワード2でBlowfish復号する。→データ3とする。
  4. データ3の先頭からデータバイト数4バイトを取得し、取り除く。→データ4とする。
  5. データ4からデータバイト数以降のゴミを取り除く。

サンプル