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

📄 rng.cpp

📁 含有多种公开密钥算法、多种块加密、多种数据流加密、多种HASH函数、多种CheckSum校验、多种MAC校验等几十种加密算法的程序
💻 CPP
字号:
/************************************************** Global RNG Source File                         ** (C) 1999-2002 The Botan Project                **************************************************/#include <botan/rng.h>#include <botan/mutex.h>namespace Botan {namespace {RandomNumberGenerator* global_rng = 0;Mutex* global_rng_lock = 0;}namespace Global_RNG {/************************************************** Remove entropy from the global RNG             **************************************************/void randomize(byte output[], u32bit size)   {   if(!global_rng)      throw Exception("Global_RNG::randomize: The global RNG is not set");   global_rng_lock->lock();   global_rng->randomize(output, size);   global_rng_lock->unlock();   }/************************************************** Remove entropy from the global RNG             **************************************************/byte random()   {   byte ret = 0;   randomize(&ret, 1);   return ret;   }/************************************************** Add entropy to the global RNG                  **************************************************/void add_entropy(const byte entropy[], u32bit size)   {   if(!global_rng) return;   global_rng_lock->lock();   global_rng->add_entropy(entropy, size);   global_rng_lock->unlock();   }/************************************************** Add entropy to the global RNG                  **************************************************/void add_entropy(EntropySource& src, bool slow_poll)   {   if(!global_rng) return;   global_rng_lock->lock();   global_rng->add_entropy(src, slow_poll);   global_rng_lock->unlock();   }}/************************************************** Set the global RNG                             **************************************************/void set_global_rng(RandomNumberGenerator* rng)   {   if(rng == 0)      {      delete global_rng;      delete global_rng_lock;      global_rng = 0;      global_rng_lock = 0;      return;      }   if(!global_rng_lock)      global_rng_lock = get_mutex();   SecureBuffer<byte, 128> state;   if(global_rng)      Global_RNG::randomize(state, state.size());   global_rng_lock->lock();   if(global_rng)      delete global_rng;   global_rng = rng;   global_rng_lock->unlock();   Global_RNG::add_entropy(state, state.size());   }}

⌨️ 快捷键说明

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