|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
元データ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
↓ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ |
|
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)をご覧ください。
|