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

📄 get_algo.cpp

📁 含有多种公开密钥算法、多种块加密、多种数据流加密、多种HASH函数、多种CheckSum校验、多种MAC校验等几十种加密算法的程序
💻 CPP
字号:
/************************************************** Algorithm Retrieval Source File                ** (C) 1999-2002 The Botan Project                **************************************************/#include <botan/lookup.h>namespace Botan {/************************************************** Get a block cipher by name                     **************************************************/BlockCipher* get_block_cipher(const std::string& name)   {   const BlockCipher* cipher = retrieve_block_cipher(name);   if(cipher)      return cipher->clone();   throw Algorithm_Not_Found(name);   }/************************************************** Get a stream cipher by name                    **************************************************/StreamCipher* get_stream_cipher(const std::string& name)   {   const StreamCipher* cipher = retrieve_stream_cipher(name);   if(cipher)      return cipher->clone();   throw Algorithm_Not_Found(name);   }/************************************************** Get a hash function by name                    **************************************************/HashFunction* get_hash(const std::string& name)   {   const HashFunction* hash = retrieve_hash(name);   if(hash)      return hash->clone();   throw Algorithm_Not_Found(name);   }/************************************************** Get a MAC by name                              **************************************************/MessageAuthenticationCode* get_mac(const std::string& name)   {   const MessageAuthenticationCode* mac = retrieve_mac(name);   if(mac)      return mac->clone();   throw Algorithm_Not_Found(name);   }/************************************************** Get a block cipher padding method by name      **************************************************/const BlockCipherModePaddingMethod* get_bc_pad(const std::string& name)   {   const BlockCipherModePaddingMethod* pad = retrieve_bc_pad(name);   if(pad)      return pad;   throw Algorithm_Not_Found(name);   }/************************************************** Query if an algorithm exists                   **************************************************/bool have_algorithm(const std::string& name)   {   if(retrieve_block_cipher(name))      return true;   if(retrieve_stream_cipher(name))      return true;   if(retrieve_hash(name))      return true;   if(retrieve_mac(name))      return true;   return false;   }/************************************************** Query if Botan has the named block cipher      **************************************************/bool have_block_cipher(const std::string& name)   {   if(retrieve_block_cipher(name))      return true;   return false;   }/************************************************** Query if Botan has the named stream cipher     **************************************************/bool have_stream_cipher(const std::string& name)   {   if(retrieve_stream_cipher(name))      return true;   return false;   }/************************************************** Query if Botan has the named hash function     **************************************************/bool have_hash(const std::string& name)   {   if(retrieve_hash(name))      return true;   return false;   }/************************************************** Query if Botan has the named MAC               **************************************************/bool have_mac(const std::string& name)   {   if(retrieve_mac(name))      return true;   return false;   }/************************************************** Query the BLOCK_SIZE of a block cipher         **************************************************/u32bit block_size_of(const std::string& name)   {   const BlockCipher* cipher = retrieve_block_cipher(name);   if(cipher)      return cipher->BLOCK_SIZE;   throw Algorithm_Not_Found(name);   }/************************************************** Query the OUTPUT_LENGTH of a hash or MAC       **************************************************/u32bit output_length_of(const std::string& name)   {   const HashFunction* hash = retrieve_hash(name);   if(hash)      return hash->OUTPUT_LENGTH;   const MessageAuthenticationCode* mac = retrieve_mac(name);   if(mac)      return mac->OUTPUT_LENGTH;   throw Algorithm_Not_Found(name);   }/************************************************** Query the MINIMUM_KEYLENGTH of an algorithm    **************************************************/u32bit min_keylength_of(const std::string& name)   {   const BlockCipher* bc = retrieve_block_cipher(name);   if(bc)      return bc->MINIMUM_KEYLENGTH;   const StreamCipher* sc = retrieve_stream_cipher(name);   if(sc)      return sc->MINIMUM_KEYLENGTH;   const MessageAuthenticationCode* mac = retrieve_mac(name);   if(mac)      return mac->MINIMUM_KEYLENGTH;   throw Algorithm_Not_Found(name);   }/************************************************** Query the MAXIMUM_KEYLENGTH of an algorithm    **************************************************/u32bit max_keylength_of(const std::string& name)   {   const BlockCipher* bc = retrieve_block_cipher(name);   if(bc)      return bc->MAXIMUM_KEYLENGTH;   const StreamCipher* sc = retrieve_stream_cipher(name);   if(sc)      return sc->MAXIMUM_KEYLENGTH;   const MessageAuthenticationCode* mac = retrieve_mac(name);   if(mac)      return mac->MAXIMUM_KEYLENGTH;   throw Algorithm_Not_Found(name);   }/************************************************** Query the KEYLENGTH_MULTIPLE of an algorithm   **************************************************/u32bit keylength_multiple_of(const std::string& name)   {   const BlockCipher* bc = retrieve_block_cipher(name);   if(bc)      return bc->KEYLENGTH_MULTIPLE;   const StreamCipher* sc = retrieve_stream_cipher(name);   if(sc)      return sc->KEYLENGTH_MULTIPLE;   const MessageAuthenticationCode* mac = retrieve_mac(name);   if(mac)      return mac->KEYLENGTH_MULTIPLE;   throw Algorithm_Not_Found(name);   }}

⌨️ 快捷键说明

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