⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 base.h

📁 含有多种公开密钥算法、多种块加密、多种数据流加密、多种HASH函数、多种CheckSum校验、多种MAC校验等几十种加密算法的程序
💻 H
字号:
/************************************************** Base Classes Header File                       ** (C) 1999-2002 The Botan Project                **************************************************/#ifndef BOTAN_BASE_H__#define BOTAN_BASE_H__#include <botan/config.h>#include <botan/exceptn.h>#include <botan/symkey.h>#include <botan/init.h>namespace Botan {/************************************************** Algorithm Base Class                           **************************************************/class Algorithm   {   public:      virtual void clear() throw() = 0;      virtual std::string name() const = 0;      virtual ~Algorithm() {}   private:      Algorithm& operator=(const Algorithm&) { return *this; }   };/************************************************** Symmetric Algorithm Base Class                 **************************************************/class SymmetricAlgorithm : public Algorithm   {   public:      const u32bit MAXIMUM_KEYLENGTH, MINIMUM_KEYLENGTH, KEYLENGTH_MULTIPLE;      void set_key(const SymmetricKey&) throw(Invalid_Key_Length);      void set_key(const byte[], u32bit) throw(Invalid_Key_Length);      bool valid_keylength(u32bit) const;      SymmetricAlgorithm(u32bit, u32bit, u32bit);      virtual ~SymmetricAlgorithm() {}   private:      virtual void key(const byte[], u32bit) = 0;   };/************************************************** Block Cipher Base Class                        **************************************************/class BlockCipher : public SymmetricAlgorithm   {   public:      const u32bit BLOCK_SIZE;      void encrypt(const byte in[], byte out[]) const { enc(in, out); }      void decrypt(const byte in[], byte out[]) const { dec(in, out); }      void encrypt(byte block[]) const { enc(block, block); }      void decrypt(byte block[]) const { dec(block, block); }      virtual BlockCipher* clone() const = 0;      BlockCipher(u32bit, u32bit, u32bit = 0, u32bit = 1);      virtual ~BlockCipher() {}   private:      virtual void enc(const byte[], byte[]) const = 0;      virtual void dec(const byte[], byte[]) const = 0;   };/************************************************** Stream Cipher Base Class                       **************************************************/class StreamCipher : public SymmetricAlgorithm   {   public:      void encrypt(const byte i[], byte o[], u32bit len) { cipher(i, o, len); }      void decrypt(const byte i[], byte o[], u32bit len) { cipher(i, o, len); }      void encrypt(byte in[], u32bit len) { cipher(in, in, len); }      void decrypt(byte in[], u32bit len) { cipher(in, in, len); }      virtual void seek(u32bit);      virtual StreamCipher* clone() const = 0;      StreamCipher(u32bit, u32bit = 0, u32bit = 1);      virtual ~StreamCipher() {}   private:      virtual void cipher(const byte[], byte[], u32bit) = 0;   };/************************************************** Buffered Computation Base Class                **************************************************/class BufferedComputation : public Algorithm   {   public:      const u32bit OUTPUT_LENGTH;      void update(const byte[], u32bit);      void update(const std::string&);      void update(byte);      void final(byte out[]) { final_result(out); }      SecureVector<byte> final();      SecureVector<byte> process(const byte[], u32bit);      SecureVector<byte> process(const std::string&);      BufferedComputation(u32bit);      virtual ~BufferedComputation() {}   private:      virtual void add_data(const byte[], u32bit) = 0;      virtual void final_result(byte[]) = 0;   };/************************************************** Hash Function Base Class                       **************************************************/class HashFunction : public BufferedComputation   {   public:      const u32bit HASH_BLOCK_SIZE;      virtual HashFunction* clone() const = 0;      HashFunction(u32bit, u32bit = 0);      virtual ~HashFunction() {}   };/************************************************** Message Authentication Code Base Class         **************************************************/class MessageAuthenticationCode : public BufferedComputation,                                  public SymmetricAlgorithm   {   public:      virtual std::string name() const = 0;      virtual MessageAuthenticationCode* clone() const = 0;      MessageAuthenticationCode(u32bit, u32bit, u32bit = 0, u32bit = 1);      virtual ~MessageAuthenticationCode() {}   };/************************************************** Entropy Source Base Class                      **************************************************/class EntropySource   {   public:      virtual u32bit slow_poll(byte[], u32bit) = 0;      virtual u32bit fast_poll(byte[], u32bit);      virtual ~EntropySource() {}   };/************************************************** Random Number Generator Base Class             **************************************************/class RandomNumberGenerator : public Algorithm   {   public:      virtual byte random() = 0;      virtual void randomize(byte[], u32bit);      void add_entropy(const byte[], u32bit);      void add_entropy(EntropySource&, bool = true);      virtual ~RandomNumberGenerator() {}   private:      virtual void add_randomness(const byte[], u32bit) throw() = 0;   };}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -