# CRYPTO_RC4FastEncrypt

## 構文

      #include <nitro/crypto.h>

      void CRYPTO_RC4FastEncrypt(CRYPTORC4FastContext* context, const void* in, u32 length, void* out);

## 引数

context | `CRYPTO_RC4FastInit()` で予め鍵を設定した `CRYPTORC4FastContext` 型の構造体を指定します。
in | RC4 アルゴリズムによる暗号化/復号を行う対象のデータへのポインタを指定します。
length | in で指定したデータの長さを指定します。
out | 暗号化/復号を行った結果を格納する先のポインタを指定します。

## 返り値

なし。

## 説明

共通鍵暗号である RC4 アルゴリズムによる暗号化/復号を行います。
RC4 アルゴリズムは暗号化と復号を同一の関数で行います。
in に格納されているデータに対して処理を行い、変換結果を out に出力します。in と out に同じポインタを指定して上書きすることも可能です。

`CRYPTO_RC4*()` と `CRYPTO_RC4Fast*()` の違いは使用するメモリ量と処理速度です。
`CRYPTO_RC4*()` で使用する `CRYPTORC4Context` 構造体は 260 バイトですが、 `CRYPTO_RC4Fast*()` で使用する `CRYPTORC4FastContext` 構造体は 1032 バイトを使用します。
また、十分大きなサイズのデータを扱う場合、`CRYPTO_RC4FastEncrypt()` のほうが1.5倍程度速く処理を行います。
ただし、速度差が出るのは in と out に同じポインタを与えた場合であり、異なるポインタを与えた場合は `CRYPTO_RC4Encrypt()` と `CRYPTO_RC4FastEncrypt()` であまり速度に違いはでません。

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

## 参照

`CRYPTO_RC4Fast, CRYPTO_RC4FastInit`

## 履歴

2008/2/25 初版