00001 #ifndef CRYPTOPP_ARC4_H
00002 #define CRYPTOPP_ARC4_H
00003
00004 #include "cryptlib.h"
00005 #include "misc.h"
00006
00007 NAMESPACE_BEGIN(CryptoPP)
00008
00010 class ARC4 : public RandomNumberGenerator, public StreamCipher, public VariableKeyLength<16, 1, 256>
00011 {
00012 public:
00013 ARC4(const byte *userKey, unsigned int keyLength=DEFAULT_KEYLENGTH);
00014 ~ARC4();
00015
00016 byte GenerateByte();
00017
00018 byte ProcessByte(byte input);
00019 void ProcessString(byte *outString, const byte *inString, unsigned int length);
00020 void ProcessString(byte *inoutString, unsigned int length);
00021
00022 private:
00023 SecByteBlock m_state;
00024 byte m_x, m_y;
00025 };
00026
00028 class MARC4 : public ARC4
00029 {
00030 public:
00031 MARC4(const byte *userKey, unsigned int keyLength=DEFAULT_KEYLENGTH, unsigned int discardBytes=256);
00032 };
00033
00034 NAMESPACE_END
00035
00036 #endif