# CRYPTO_RC4Fast

## 構文

      #include <nitro/crypto.h>

      void CRYPTO_RC4Fast(const void* key, u32 key_len, void* data, u32 data_len);

## 引数

key | RC4 アルゴリズムによる暗号化/復号を行うための鍵のバイト列へのポインタを指定します。
key_len | key で指定した鍵の長さを指定します。鍵の長さは 16 バイト以下である必要があり、それより大きい場合は 16 バイトに切り詰められます。
data | RC4 アルゴリズムによる暗号化/復号を行う対象のデータへのポインタを指定します。
data_len | data で指定したデータの長さを指定します。

## 返り値

なし。

## 説明

共通鍵暗号である RC4 アルゴリズムによる暗号化/復号を行います。RC4 アルゴリズムは暗号化と復号を同一の関数で行います。
data に格納されているデータに対して、直接処理を行い、変換結果が上書きされます。
この関数は `CRYPTO_RC4FastInit()` と `CRYPTO_RC4FastEncrypt()` を続けて呼び出すインライン関数として定義されています。

`CRYPTO_RC4()` と `CRYPTO_RC4Fast()` の違いは使用するメモリ量と処理速度です。
`CRYPTO_RC4()` は実行時にスタックに `CRYPTORC4Context` 構造体を取りますので少なくとも 260 バイト以上が必要になります。
一方、`CRYPTO_RC4Fast()` は `CRYPTORC4FastContext` 構造体を取りますので、1032 バイト以上のスタックを使用します。
速度に関しては、十分大きなサイズのデータを扱う場合、`CRYPTO_RC4Fast()` のほうが1.5倍程度速く処理を行います。

RC4 アルゴリズムを使用する際の詳細な注意事項に関しましては、「RC4 アルゴリズムによる暗号化の概要」を参照してください。

## 参照

`CRYPTO_RC4FastEncrypt, CRYPTO_RC4FastInit`

## 履歴

2008/2/25 初版