# aesconv

## 説明

`aesconv` は、AES 暗号アルゴリズムに基づいた暗号化、復号化を行うツールです。

## 使用方法

### 起動コマンド

`% aesconv -m ctr -k key -c counter [-r] [-p inputFile] [-o outputFile]`
`% aesconv -m cbc_encrypt -k key -i iv [-r] [-p inputFile] [-o outputFile]`
`% aesconv -m cbc_decrypt -k key -i iv [-r] [-p inputFile] [-o outputFile]`
`% aesconv -m ccm_encrypt -k key -n nonce [-r] [-p inputFile] [-o outputFile] [-a Adata] -t taglen`
`% aesconv -m ccm_decrypt -k key -n nonce [-r] [-p inputFile] [-o outputFile] [-a Adata] -t tag`

`-m` オプションには使用する暗号モード、暗号化/復号化を指定します。 指定できるのは以下の 5 種類です。

指定する値 | 説明
--- | ---
ctr | CTR モード
cbc_encrypt | CBC モードの暗号化
cbc_decrypt | CBC モードの復号化
ccm_encrypt | CCM モードの暗号化
ccm_decrypt | CCM モードの復号化

`key` は暗号化/復号化に使用する鍵を指定します。 鍵の指定方法は 2 種類あります。1 つめは "hex:" に続いて 32 桁の 16 進数で鍵を指定する方法で、 例として鍵が 16 進数で 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF ならば

        -k hex:00112233445566778899AABBCCDDEEFF

のように指定します。
もう 1 つの方法は鍵のバイナリが格納されたファイルのパスを指定します。

        -k key.bin

のように指定すると key.bin ファイルの先頭 16 バイトを鍵として使用します。

`counter` は CTR モードのカウンタ初期値を指定します。 指定方法は `key` と同様になります。

`iv` は CBC モードの初期ベクタを指定します。 指定方法は `key` と同様になります。

`nonce` は CCM モードの Nonce を指定します。 指定方法は `key` と同様になります。 ただし、aesconv は 96 ビットの Nonce にのみ対応しているので hex 形式で指定する場合は 24 桁の 16 進数で指定し、ファイルで指定する場合は先頭 12 バイトを使用します。

`-r` オプションを指定すると TWL の AES と互換性のある方式で暗号化/復号化を行います。

`inputFile` には暗号化/復号化への入力となるデータが格納されたファイルを指定します。 `-p` オプションが指定されなかった場合は入力を標準入力から受け取ります。

`outputFile` は暗号化/復号化の出力先ファイルを指定します。 `-o` オプションが指定されなかった場合は標準出力に出力します。

`Adata` は CCM モードでの Adata を指定します。 Adata の指定方法は 2 種類あります。1 つめは "stdin:" に続いて 10 進数で Adata のサイズを 指定し、Adata を標準入力から渡す方法です。 `-p` オプションを使用せず、入力データも標準入力から渡す場合には Adata を先に、入力データを後に渡します。 例として Adata のサイズが 12345 バイトの場合は

        -a stdin:12345

のように指定します。
もう 1 つの方法は Adata バイナリが格納されたファイルのパスを指定します。

        -a adata.bin

のように指定すると adata.bin ファイルの全内容を Adata として使用します。
`-a` オプションが指定されなかった場合は Adata のサイズとして 0 が指定されたものとして扱います。

`taglen` は CCM モード暗号化での MAC の長さを指定します。 指定できる値は 4, 6, 8, 10, 12, 14, 16, のいずれかです。

`tag` は CCM モード復号化での MAC を指定します。 MAC の指定方法は 2 種類あります。1 つめは "hex:" に続き、MAC の長さにあわせて 8, 12, 16, 20, 24, 28, 32 桁いずれかの長さの 16 進数で MAC を指定する方法です。 例として MAC が 12 バイトであり、16 進数で 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC ならば

        -t hex:00112233445566778899AABBCC

のように指定します。
もう 1 つの方法は MAC の長さを指定し、MAC を標準入力から渡す方法です。

        -t 12

のように指定すると標準入力から 12 バイトを読み取り MAC として使用します。 指定できる MAC の長さは暗号化と同じく 4, 6, 8, 10, 12, 14, 16, のいずれかです。
`-p` オプションを使用せず、入力データも標準入力から渡す場合には 入力データを先に、MAC を後に渡します。

## 場所

`$TwlSDK/tools/bin/aesconv.exe`

## 参照

`AES ライブラリ関数一覧`

## 履歴

2008/08/22 初版