|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
元データ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
↓ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
�@ |
|
�A |
|
�B |
|
|
|
�C |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
↓ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Camellia(128ビット鍵)により暗号化 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
↓ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
バイナリーデータを16進数表現('00'〜'FF')の文字列化 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
↓ |
|
|
|
|
|
|
|
|
| �D |
|
�E |
|
|
|
�@ 元データの長さ(バイト数)をバイナリー2バイト(ビッグエンディアン)で記録
�A 元データ全体のバイト単位排他論理和(XOR)
�B �AのNOT値(1の補数)
�C 16バイト単位の長さにするためのパディングデータ(バイナリーの0)
�D 16進数表現部のバイト単位排他論理和(XOR)を2バイトの16進数文字列にしたもの
�E �Dの排他論理和(XOR)値のNOT値(1の補数)を2バイトの16進数文字列にしたもの
《復号化手順》 |
|
|
|
1.データ文字列全体が’0’〜'9'、'A'〜'F'で構成されているかをチェック |
|
|
|
2.データ文字列の長さが32の倍数 + 4 になっているかをチェック |
|
|
|
3.5バイト目以降の排他論理和を算出し、上記�D、�Eとの整合をチェック |
|
|
|
4.16進数表現の文字列をバイナリー化し、Camelliaアルゴリズムにより復号化 |
|
|
|
5.5バイト目以降の排他論理和を算出し、上記�A、�Bとの整合をチェック |
|
|
|
6.5バイト目以降、�@の長さ分を複合化データとして取得
|
|
参考:Camelliaについて |
|
|
|
Camellia(カメリア)は、NTTと三菱電機が共同で開発した共通鍵ブロック暗号です。
Camelliaについての詳しい説明はCamellia紹介ページ(NTT)をご覧ください。
|