PDEL for PHP5

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.
   レシピファイルで定義可能なコマンドは、以下の12種類です。
コマンド 概要 定義順序
1 CheckLimitTime 有効期限付き暗号化を行う際に使用します。 1
2 CheckHijack セッション・ハイジャック・チェック付き暗号化を行う際に使用します。 2
3 AllowBinString バイナリ文字列の暗号化を行う際に使用します。 3
4 Extend 固定長暗号化を行う際に使用します。
5 Add 操作対象文字列に無意味な文字を付与する際に使用します。 4
6 StrCycle 操作対象範囲を循環させる際に使用します。
7 StrReverse 操作対象範囲を反転させる際に使用します。
8 CharCycleByMap 操作対象範囲の文字を、マップ文字列上の定義で循環させる際に使用します。
9 CharCycleByAscii 操作対象範囲の文字を、ASCII定義文字列(マップ文字種別をASCIIコード順に並べ替えた文字列)上の定義で循環させる際に使用します。
10 CharReverseByMap 操作対象範囲の文字を、マップ文字列上の定義で反転させる際に使用します。
11 CharReverseByAscii 操作対象範囲の文字を、ASCII定義文字列(マップ文字種別をASCIIコード順に並べ替えた文字列)上の定義で反転させる際に使用します。
12 ChangeAuthMode ハッシュ値算出機能の無いシステムとのデータ連携処理でデフォルト認証モードを変更する場合に使用します。 N/A
   コマンドの共通仕様として、以下のルールを適用します。
ルール
1 レシピファイル内のコマンド行は、定義順序の昇順で定義します。例えばAddコマンドを定義した行よりも後にCheckLimitTimeコマンドは定義できません。(定義順序4のコマンド群の定義順序は不問です。例えばCharReverseByAsciiコマンドの次にAddコマンドを定義することも可能です。)なお定義順序N/AのChangeAuthModeコマンドは、ハッシュ値算出機能の無いシステムとのデータ連携処理でデフォルト認証モードを変更する場合に、レシピファイルに1行だけ定義する特殊なコマンドです。
2 定義順序1~3のコマンド(CheckLimitTime~Extend)は各々最大1回しか定義できません。
3 定義順序3のコマンド(AllowBinString・Extend)は、レシピファイル内で同時に定義できません。
4 定義順序4のコマンド(Add~CharReverseByAscii)に定義回数制限はありません。(但し「レシピファイル内で定義可能なコマンド行は最大100行」の制限はあります。)
5 一つのレシピファイル内にはExtendコマンドまたは定義順序4のコマンド(Add~CharReverseByAscii)を1行以上定義しなくてはなりません。(ChangeAuthModeコマンドを除く。)
6 コマンド名は大文字と小文字が区別されます。
   各コマンド単位で詳細を記しますが、特に定義順序4のAdd以外のコマンド(StrCycle~CharReverseByAscii)の説明で用いる操作対象範囲は、各コマンドパラメータの「開始位置」「長さ」をもとに次の論理で決定します。(PHPのsubstr関数のようなイメージです。)
開始位置 長さ 操作対象範囲
数値 省略
  1. A=(「開始位置÷操作対象文字列の桁数」のあまり)とする。
  2. 操作対象文字列の先頭からA桁目を開始位置(先頭桁は0)とし、それ以降全てを操作対象範囲とする。
数値
  1. A=(「開始位置÷操作対象文字列の桁数」のあまり)とする。
  2. B=(操作対象文字列の桁数-A)とする。
  3. Bと長さのうち、小さいほうをCとする。
  4. 操作対象文字列の先頭から「A桁目を開始位置(先頭桁は0)とするCの桁数分の領域」を操作対象範囲とする。
LAST 省略 操作対象文字列全体
数値 操作対象文字列の末尾から長さで指定された桁数分の領域。「長さ>操作対象文字列の桁数」の場合、操作対象文字列全体。
省略 指定不可能 操作対象文字列全体
※操作対象文字列が ABCDEFGH の場合の例
開始位置 長さ 操作対象範囲
1 省略 BCDEFGH
2 3 CDE
LAST 省略 ABCDEFGH
LAST 2 GH
省略 未指定 ABCDEFGH
コマンド名 CheckLimitTime
概要 有効期限付き暗号化を行う際に使用します。
パラメータ
  • 第1パラメータのみ(省略可能)
    指定すると、相対日時型の有効期限付き暗号化とみなされ、暗号化時のサーバ時刻に指定された秒数を加算した日時が有効期限となります。
    省略すると、絶対日時型の有効期限付き暗号化とみなされ、暗号化時のパラメータに絶対日時が必須となります。
定義例
  • 暗号化後、30分(1800秒)以内に限定して復号を許可する場合
    CheckLimitTime:1800
  • 絶対日時型の有効期限付き暗号化を行う場合
    CheckLimitTime
チェック内容
  • 固定暗号化方式のレシピファイル内の定義でないこと。
  • 指定時は1~2592000の数字であること。(2592000は30日間の秒数です。)
備考
  • このコマンド使用時は認証情報Bが設定されます。
コマンド名 CheckHijack
概要 セッション・ハイジャック・チェック付き暗号化を行う際に使用します。
パラメータ
  • 第1パラメータ(必須)
    チェック可能なキー項目(ZFIP、IP、UA、LANG、APL)のうち、チェックを行う項目を+で連結した文字列を指定します。1項目のみ実施する場合、+は指定しないでください。
    キー項目の詳細はセッション・ハイジャック・チェック付き暗号化をご参考願います。
  • 第2パラメータ(省略可能)
    チェック用文字列(第1パラメータで指定した情報を連結した文字列)の認証モードを指定します。省略時はデフォルト認証モードをもとに認証情報Cが設定されます。
定義例
  • ZFIPとUAとLANGをデフォルト認証モードでチェックする場合
    CheckHijack:ZFIP+UA+LANG
  • APLのみを認証モード7(チェック用文字列のバイト数とSHA-1)でチェックする場合
    CheckHijack:APL:7
チェック内容
  • 固定暗号化方式のレシピファイル内の定義でないこと。
  • 第1パラメータはZFIP、IP、UA、LANG、APLいずれか一つ、またはそれら複数を+で連結した文字列であること。但しZFIPとIPは同時に指定できない。
  • 第1パラメータにAPLが指定された場合、暗号化・復号の実行時に任意情報がレシピパラメータとして指定されていること。
  • 第1パラメータにAPLが未指定の場合、暗号化・復号の実行時に任意情報がレシピパラメータとして未指定であること。
  • 指定されたキー項目に該当する情報にNullが含まれないこと。
  • 指定されたキー項目に該当する情報を連結した文字列が65535バイト以下であること。
  • 第2パラメータ指定時は、「2~7の数字」かつ「デフォルト認証モードと異なる値」であること。
  • 第2パラメータ省略時は、デフォルト認証モードは2~7であること。
備考
  • このコマンド使用時は認証情報Cが設定されます。
コマンド名 AllowBinString
概要 バイナリ文字列の暗号化を行う際に使用します。
パラメータ
  • なし
定義例
  • バイナリ文字列の暗号化を行う場合
    AllowBinString
チェック内容
  • なし
備考
  • Extendコマンドが定義されていないことのチェックは、定義順序チェック(指定された場合は「先頭行」または「先頭行でなければ上の行はCheckLimitTimeコマンドまたはCheckHijackコマンドでなくてはならない」)として行われます。
  • ここでいうバイナリ文字列とはNull(16進数の00)を含むバイト列です。
  • このコマンド未定義のレシピファイルを用いてバイナリ文字列の暗号化を行うと、PDELはエラーを返します。
コマンド名 Extend
概要 暗号化データを固定長に拡張する際に使用します。
パラメータ
  • 第1パラメータのみ(必須)
定義例
  • 255バイトに拡張する場合
    Extend:255
チェック内容
  • パラメータは50~2000の数字であること。
  • パラメータは「認証情報A~Cの合計バイト数」+「暗号化対象データのバイト数×2」以上であること。(このエラーは暗号化対象データのバイト数に左右され、発生する・しないがランダムなため、内部的には「レシピファイルエラー」ではなく「暗号化エラー」として扱っています。)
備考
  • AllowBinStringコマンドが定義されていないことのチェックは、定義順序チェック(指定された場合は「先頭行」または「先頭行でなければ上の行はCheckLimitTimeコマンドまたはCheckHijackコマンドでなくてはならない」)として行われます。
  • 固定長暗号化も併せてご参考願います。
コマンド名 Add
概要 暗号化データ(操作対象文字列)に無意味な情報を付与します。
パラメータ
  • 第1パラメータ(必須)
    付与する文字数
  • 第2パラメータ(省略可能)
    付与する位置。省略時は操作対象文字列の先頭に付与されます。LAST指定時は操作対象文字列の末尾に付与されます。数値指定時は(「指定された数値÷操作対象文字列の桁数」のあまり)に相当する文字数を、先頭からスキップし、その後方に追加します。
定義例
  • 操作対象文字列の先頭に2桁の無意味な情報を付与する場合
    Add:2
  • 操作対象文字列の先頭から1桁目の後方に3桁の無意味な情報を付与する場合
    Add:3:1
  • 操作対象文字列の末尾に4桁の無意味な情報を付与する場合
    Add:4:LAST
チェック内容
  • 第1パラメータは1~100の数字であること。
  • 第2パラメータ指定時は0~30043の数字またはLASTであること。
備考
コマンド名 StrCycle
概要 暗号化データの特定範囲(操作対象範囲)を循環させる際に使用します。
パラメータ
  • 第1パラメータ(必須)
    循環方向
  • 第2パラメータ(必須)
    循環させる文字数
  • 第3パラメータ(省略可能。但し第4パラメータ指定時は必須)
    開始位置
  • 第4パラメータ(省略可能)
    長さ
定義例
  • 操作対象文字列全体を左方向に5桁循環させる場合
    StrCycle:L:5
  • 操作対象文字列の2桁目から10桁分を右方向に3桁循環させる場合
    StrCycle:R:3:2:10
チェック内容
  • 第1パラメータはLまたはRであること。
  • 第2パラメータは1~30043の数字であること。
  • 第3パラメータ指定時は0~30043の数字またはLASTであること。
  • 第4パラメータ指定時は2~30043の数字であること。
備考
  • 動作イメージとして概略イメージの手順Dも併せてご参考願います。
  • 実際に循環される文字数は「『第2パラメータ÷捜査対象範囲の桁数』のあまり」です。
コマンド名 StrReverse
概要 暗号化データの特定範囲(操作対象範囲)を反転させる際に使用します。
パラメータ
  • 第1パラメータ(省略可能。但し第2パラメータ指定時は必須)
    開始位置
  • 第2パラメータ(省略可能)
    長さ
定義例
  • 操作対象文字列全体を反転させる場合
    StrReverse
  • 操作対象文字列の2桁目から10桁分を反転させる場合
    StrReverse:2:10
チェック内容
  • 第1パラメータ指定時は0~30043の数字またはLASTであること。
  • 第2パラメータ指定時は2~30043の数字であること。
備考
コマンド名 CharCycleByMap
概要 暗号化データの特定範囲(操作対象範囲)の文字を、マップ文字列上の定義で循環させる際に使用します。
パラメータ
  • 第1パラメータ(必須)
    循環方向
  • 第2パラメータ(必須)
    循環させる文字数
  • 第3パラメータ(省略可能。但し第4パラメータ指定時は必須)
    開始位置
  • 第4パラメータ(省略可能)
    長さ
定義例
  • 操作対象文字列の6桁目から2桁分の文字をマップ文字列上の定義で左方向に10桁循環させる場合(注)
    CharCycleByMap:L:10:5:2
チェック内容
  • 第1パラメータはLまたはRであること。
  • 第2パラメータは1~63の数字であること。
  • 第3パラメータ指定時は0~30043の数字またはLASTであること。
  • 第4パラメータ指定時は1~30043の数字であること。
備考
  • 遅いコマンドです。使用時は第4パラメータの長さに「小さめの値」を指定することが推奨されます。
(注)この場合の動作イメージ(操作対象文字列はazszNFXVとする。)
マップ文字列 cP-gAUXTNSYqyb5srfawu3lxVz.F6B0eiZOLnCvHRGW97mpJ81DhtEoIjKkd4QM2
レシピ定義 CharCycleByMap:L:10:5:2
操作対象文字列 azszNFXV → azszNf4V
備考
  • 操作前のFを左方向に10桁循環させたのがfです。
  • 操作前のXを左方向に10桁循環させたのが4です。(マップ文字列の先頭に到達すると末尾から循環します。)
コマンド名 CharCycleByAscii
概要 暗号化データの特定範囲(操作対象範囲)の文字を、ASCII定義文字列(マップ文字種別をASCIIコード順に並べ替えた文字列)上の定義で循環させる際に使用します。
パラメータ
  • 第1パラメータ(必須)
    循環方向
  • 第2パラメータ(必須)
    循環させる文字数
  • 第3パラメータ(省略可能。但し第4パラメータ指定時は必須)
    開始位置
  • 第4パラメータ(省略可能)
    長さ
定義例
  • 操作対象文字列の6桁目から2桁分の文字をASCII定義文字列上の定義で右方向に15桁循環させる場合(注)
    CharCycleByAscii:R:15:5:2
チェック内容
  • 第1パラメータはLまたはRであること。
  • 第2パラメータは1~63の数字であること。
  • 第3パラメータ指定時は0~30043の数字またはLASTであること。
  • 第4パラメータ指定時は1~30043の数字であること。
備考
  • 遅いコマンドです。使用時は第4パラメータの長さに「小さめの値」を指定することが推奨されます。
(注)この場合の動作イメージ(操作対象文字列は aFsVSrkz とする。)
ASCII定義文字列 .-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
レシピ定義 CharCycleByAscii:R:15:5:2
操作対象文字列 aFsVSrkz → aFsVS4zz
備考
  • 操作前のrを右方向に15桁循環させたのが4です。(ASCII定義文字列の先頭に到達すると末尾から循環します。)
  • 操作前のkを右方向に15桁循環させたのがzです。
コマンド名 CharReverseByMap
概要 暗号化データの特定範囲(操作対象範囲)の文字を、マップ文字列上の定義で反転させる際に使用します。
パラメータ
  • 第1パラメータ(省略可能。但し第2パラメータ指定時は必須)
    開始位置
  • 第2パラメータ(省略可能)
    長さ
定義例
  • 操作対象文字列の6桁目から2桁分の文字をマップ文字列上の定義で反転させる場合(注)
    CharReverseByMap:5:2
チェック内容
  • 第1パラメータ指定時は0~30043の数字またはLASTであること。
  • 第2パラメータ指定時は1~30043の数字であること。
備考
  • 遅いコマンドです。使用時は第2パラメータの長さに「小さめの値」を指定することが推奨されます。
(注)この場合の動作イメージ(操作対象文字列は azsVN.jz とする。)
マップ文字列(前半32文字) cP-gAUXTNSYqyb5srfawu3lxVz.F6B0e
マップ文字列(後半32文字) iZOLnCvHRGW97mpJ81DhtEoIjKkd4QM2
レシピ定義 CharReverseByMap:5:2
操作対象文字列 azsVN.jz → azsVNCTz
備考
  • 操作前の.を反転させたのがCです。
  • 操作前のjを反転させたのがTです。
  • マップ文字列の前半の32文字と後半の32文字について「1桁目(先頭1文字)と64桁目(末尾1文字)、2桁目と63桁目、3桁目と62桁目、・・・、32桁目と33桁目を入れ替える」操作をこのコマンドは実施します。
コマンド名 CharReverseByAscii
概要 暗号化データの特定範囲(操作対象範囲)の文字を、ASCII定義文字列(マップ文字種別をASCIIコード順に並べ替えた文字列)上の定義で反転させる際に使用します。
パラメータ
  • 第1パラメータ(省略可能。但し第2パラメータ指定時は必須)
    開始位置
  • 第2パラメータ(省略可能)
    長さ
定義例
  • 操作対象文字列の6桁目から2桁分の文字をASCII定義文字列上の定義で反転させる場合(注)
    CharReverseByAscii:5:2
チェック内容
  • 第1パラメータ指定時は0~30043の数字またはLASTであること。
  • 第2パラメータ指定時は1~30043の数字であること。
備考
  • 遅いコマンドです。使用時は第2パラメータの長さに「小さめの値」を指定することが推奨されます。
(注)この場合の動作イメージ(操作対象文字列は fVsFYvA. とする。)
ASCII定義文字列(前半32文字) .-0123456789ABCDEFGHIJKLMNOPQRST
ASCII定義文字列(後半32文字) UVWXYZabcdefghijklmnopqrstuvwxyz
レシピ定義 CharReverseByAscii:5:2
操作対象文字列 fVsFYvA. → fVsFY2n.
備考
  • 操作前の.を反転させたのがCです。
  • 操作前のjを反転させたのがTです。
  • ASCII定義文字列の前半の32文字と後半の32文字について「1桁目(先頭1文字)と64桁目(末尾1文字)、2桁目と63桁目、3桁目と62桁目、・・・、32桁目と33桁目を入れ替える」操作をこのコマンドは実施します。
コマンド名 ChangeAuthMode
概要 デフォルト認証モードを変更する場合に使用します。
パラメータ
  • 第1パラメータ(必須)
    変更後のデフォルト認証モードを指定します。
  • 第2パラメータ(必須)
    デフォルト認証モードを変更して暗号化または復号を行うレシピ名を指定します。
定義例
  • デフォルト認証モードを1(バイト数チェックのみ)に変更してレシピ名V01のマップファイル・レシピファイルを使用する場合
    ChangeAuthMode:1:V01
チェック内容
  • 第1パラメータは0~7の数字であること。
  • 第1パラメータで指定された値はPDEL専用INIファイルに定義されているデフォルト認証モードと異なる値であること。
  • 元レシピ名(ChangeAuthModeコマンドを定義したレシピファイルのレシピ名)の先頭1桁と第2パラメータの先頭1桁は、同じであること。
  • 元レシピ名と第2パラメータは異なる内容であること。
  • 元レシピ名用のマップファイルが存在しないこと。
備考
  • 通常は定義しないでください。
  • ChangeAuthModeも併せてご参考願います。
  • 上記チェック完了後、第2パラメータのレシピ名が指定されたとみなし、暗号化または復号の処理が行われます。