Practical and Decryptable Encryption Library for PHP5 (Version 1.2.1)
Special thanks for your access. Sorry , this site is Japanese(UTF-8) version only.手順 | 内容 | イメージ | 備考 |
---|---|---|---|
A | 16進数化 | XYZ ↓ 58595a |
58595a はXYZの16進数です。 |
B | 認証情報設定 | 58595a ↓ 00037d29f8ed58595a |
16進数データの先頭に認証情報Aを設定します。 |
C | 文字の置き換え | 00037d29f8ed58595a ↓ cPPs0oqH4idoxO3nuG |
16進数で使用される0~9、およびa~fを、別の文字に置き換えます。 ==> 後述マップファイルを基に置換します。 |
D | 様々な文字列操作 | cPPs0oqH4idoxO3nuG ↓ Oxodi4Hqo0PNX9c3nuGPs |
テキストファイルの内容に従って、様々な文字列操作(文字列の追加、反転等)を行います。 ==> 後述レシピファイルを基に変換します。 |
認証情報A | 認証情報B | 認証情報C | 暗号化対象データ |
---|---|---|---|
バイト数+ハッシュ値 | 日時情報 | バイト数+ハッシュ値 | 16進数変換後 |
認証モード | 認証方式 | 付加情報量 |
---|---|---|
0 | 行わない(認証情報Cでは選択不可能) | 0バイト |
1 | バイト数のみチェック(認証情報Cでは選択不可能) | 4バイト |
2 | ハッシュ値(CRC32)のみチェック | 8バイト |
3 | ハッシュ値(MD-5)のみチェック | 32バイト |
4 | ハッシュ値(SHA-1)のみチェック | 40バイト |
5 | バイト数およびハッシュ値(CRC32)のダブルチェック | 12バイト |
6 | バイト数およびハッシュ値(MD-5)のダブルチェック | 36バイト |
7 | バイト数およびハッシュ値(SHA-1)のダブルチェック | 44バイト |
16進数 | 0 | 1 | 2 | ・・・ | d | e | f |
---|---|---|---|---|---|---|---|
マップ文字列 | cP-g | AUXT | NSYq | ・・・ | tEoI | jKkd | 4QM2 |
行番号 | テキストファイル内容 | イメージ | 意味 |
---|---|---|---|
1 | Add:3:1 | cPPs0oqH4idoxO3nuG(注) ↓ c9XNPPs0oqH4idoxO3nuG |
「マップ文字種別から3桁のランダムな文字列」を生成し「先頭から1桁目の後方」に追加する。 |
2 | StrCycle:L:2:LAST:16 | c9XNPPs0oqH4idoxO3nuG(注) ↓ c9XNP0oqH4idoxO3nuGPs |
「文字列の末尾から16桁」を「左方向に2桁循環」させる。 |
3 | StrReverse:0:15 | c9XNP0oqH4idoxO3nuGPs(注) ↓ Oxodi4Hqo0PNX9c3nuGPs |
「文字列の先頭から15桁」を「反転」させる。 |
暗号化方式 | 種類 | 名称(先頭1桁はドットです) |
---|---|---|
可変暗号化 | マップファイル | .MAP-V****.txt |
レシピファイル | .RECIPE-V****.txt | |
固定暗号化 | マップファイル | .MAP-F****.txt |
レシピファイル | .RECIPE-F****.txt |
暗号化方式 | 内容(文字コードはASCII) | サイズ |
---|---|---|
可変暗号化 |
|
64バイト |
固定暗号化 |
|
144バイト |
行番号 | マスクルール定義ファイル内容 | レシピが対象とする情報 |
---|---|---|
1 | V-NAME:NAME:ErrNAME:2 | 氏名 |
2 | V-MAD:MAD:ErrMAD:3 | メールアドレス |
3 | V-TEL:TEL:ErrTEL:3 | 電話番号 |
4 | V-ADDR:ADDR:ErrADDR:4 | 住所 |
5 | V-CARD:CARD:ErrCARD:PDEL-MASK-PRIVATE | クレジットカード |
6 | V-PASS:****:Err****:PDEL-MASK-PUBLIC | パスワード ※導入時の注意点にも記していますが パスワードをPDELで暗号化することは 推奨しません。 |
項目 | 権限レベルの有る利用者(下段は保有権限レベル) | 権限レベルの無い利用者 | |||
---|---|---|---|---|---|
1 | 2 | 3 | 4 | ||
氏名 | NAME | 実データ | 実データ | 実データ | 実データ |
メールアドレス | MAD | MAD | 実データ | 実データ | 実データ |
電話番号 | TEL | TEL | 実データ | 実データ | 実データ |
住所 | ADDR | ADDR | ADDR | 実データ | 実データ |
クレジットカード | CARD | CARD | CARD | CARD | 実データ |
パスワード | **** | **** | **** | **** | **** |
項目 | 権限レベルの有る利用者(下段は保有権限レベル) | 権限レベルの無い利用者 | |||
---|---|---|---|---|---|
1 | 2 | 3 | 4 | ||
氏名 | ErrNAME | ErrNAME | ErrNAME | ErrNAME | ErrNAME |
メールアドレス | ErrMAD | ErrMAD | ErrMAD | ErrMAD | ErrMAD |
電話番号 | ErrTEL | ErrTEL | ErrTEL | ErrTEL | ErrTEL |
住所 | ErrADDR | ErrADDR | ErrADDR | ErrADDR | ErrADDR |
クレジットカード | ErrCARD | ErrCARD | ErrCARD | ErrCARD | ErrCARD |
パスワード | Err**** | Err**** | Err**** | Err**** | Err**** |
手順 | 内容 | イメージ | 備考 |
---|---|---|---|
E-1 | 16進数化 | XYZ ↓ 58595a |
58595a はXYZの16進数です。 |
E-2 | 認証情報設定 | 58595a ↓ 00037d29f8ed58595a |
16進数データの先頭に認証情報Aを設定します。 |
E-3 | デリミタ設定 | 00037d29f8ed58595a ↓ 00037d29f8ed58595a00 |
拡張領域識別用のデリミタを設定します。 ※Extend固有の手順です。 |
E-4 | 文字の置き換え | 00037d29f8ed58595a00 ↓ cPPs0oqH4idoxO3nuGg- |
16進数で使用される0~9、およびa~fを、別の文字に置き換えます。 |
E-5 | 拡張 | cPPs0oqH4idoxO3nuGg- ↓ cPPs0oqH4idoxO3nuGg-6nBzp |
25バイトに拡張します。 ※Extend固有の手順です。 |
E-6 | 様々な文字列操作 | cPPs0oqH4idoxO3nuGg-6nBzp ↓ 略 |
レシピファイルのExtendコマンド以降の内容に従って、様々な文字列操作(文字列の追加、反転等)を行います。 |
拡張サイズ - 認証情報設定文字列バイト数 | 手順E-3 | 手順E-5 |
---|---|---|
0 | 何もしない | 何もしない |
1 | 0を末尾に追加 | 何もしない |
2 | 00を末尾に追加 | 何もしない |
3以上 | 00を末尾に追加 | (拡張サイズ - 認証情報設定文字列バイト数 - 2)桁の文字列を末尾に追加 |
キー項目 | 内容 | サーバ環境変数(注1) |
---|---|---|
ZFIP | ZF仕様のクライアントIP | (注2) |
IP | 単純仕様のクライアントIP | REMOTE_ADDR |
UA | ブラウザ種別 | HTTP_USER_AGENT |
LANG | 言語 | HTTP_ACCEPT_LANGUAGEおよびHTTP_ACCEPT_CHARSET(注3) |
APL | 任意情報 | 暗号化・復号時にPDELを利用するアプリケーションが指定する任意情報。これは端末識別番号が取得できるシステムや、クライアントIPをPDELのZFIP・IP以外の論理で取得するシステムでの利用を想定したキー項目です。 |
条件 | IPアドレス |
---|---|
サーバ環境変数HTTP_CLIENT_IPが設定されている場合 | サーバ環境変数HTTP_CLIENT_IP およびREMOTE_ADDRを連結した文字列 |
上記以外でサーバ環境変数HTTP_X_FORWARDED_FORが設定されている場合 | サーバ環境変数HTTP_X_FORWARDED_FOR およびREMOTE_ADDRを連結した文字列 |
上記2条件いずれにも該当しない場合 | サーバ環境変数REMOTE_ADDR |
上記論理はZendFrameWork(ZF。バージョンは1.12.0)の library/Zend/Controller/Request/Http.phpのgetClientIpメソッド を参考にしています。 ※厳密にはZFでは、HTTP_CLIENT_IPまたはHTTP_X_FORWARDED_FOR設定時は HTTP_CLIENT_IPまたはHTTP_X_FORWARDED_FORをクライアントIPとしてます。 ただ、おそらくHTTP_CLIENT_IPまたはHTTP_X_FORWARDED_FORは パブリックIPであるREMOTE_ADDRを含まないプライベートIP情報と思われるため 「REMOTE_ADDRを連結した文字列」をPDELではクライアントIPとしています。
【レシピファイルにExtendコマンドを定義した場合(固定長暗号化の場合)】 暗号化後の文字列データのバイト数 = (Extendコマンドで指定したサイズ) + (Addコマンド使用時はAddコマンドで指定した付与する文字数の総合計)
【レシピファイルにExtendコマンド未定義の場合(可変長暗号化の場合)】 暗号化後の文字列データのバイト数 = (認証情報A~Cの合計バイト数) + (暗号化対象データのバイト数 × 2) + (Addコマンド使用時はAddコマンドで指定した付与する文字数の総合計)当サイトのコピー環境を皆様の環境に構築すれば、自作マップファイル・レシピファイルについて「エラーの有無」「暗号可能最大バイト数」「暗号化後バイト数」等が解析され、表示されます。
【レシピファイルにExtendコマンドを定義した場合(固定長暗号化の場合)】 暗号化可能な文字列のバイト数 = (Extendコマンドで指定したサイズ - (認証情報A~Cの合計バイト数)) ÷ 2 ※端数切り捨てです。
【レシピファイルにExtendコマンド未定義の場合(可変長暗号化の場合)】 暗号化可能な文字列のバイト数 = 10000
データの流れ | 自システムにおける処理イメージ例 |
---|---|
自システム ↓ 他システム |
ハッシュ値付きで暗号化されたデータを復号 ↓ 復号されたデータをChangeAuthModeを用いてハッシュ値なしで暗号化 ↓ 他システムへハッシュ値なしの暗号化データ送信 |
他システム ↓ 自システム |
他システムからハッシュ値なしの暗号化データ受信 ↓ ChangeAuthModeを用いてハッシュ値なしで復号 ↓ 復号されたデータをハッシュ値付きで暗号化し、自システムのDBに登録 |