亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? osrng.cpp

?? 此文件是實現加解密算法的函數庫
?? CPP
字號:
// osrng.cpp - written and placed in the public domain by Wei Dai

// Thanks to Leonard Janke for the suggestion for AutoSeededRandomPool.

#include "pch.h"
#include "osrng.h"

#ifdef OS_RNG_AVAILABLE

#include "rng.h"

#ifdef CRYPTOPP_WIN32_AVAILABLE
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0400
#endif
#include <windows.h>
#include <wincrypt.h>
#else
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
#endif

NAMESPACE_BEGIN(CryptoPP)

#if defined(NONBLOCKING_RNG_AVAILABLE) || defined(BLOCKING_RNG_AVAILABLE)
OS_RNG_Err::OS_RNG_Err(const std::string &operation)
	: Exception(OTHER_ERROR, "OS_Rng: " + operation + " operation failed with error " + 
#ifdef CRYPTOPP_WIN32_AVAILABLE
		"0x" + IntToString(GetLastError(), 16)
#else
		IntToString(errno)
#endif
		)
{
}
#endif

#ifdef NONBLOCKING_RNG_AVAILABLE

#ifdef CRYPTOPP_WIN32_AVAILABLE

MicrosoftCryptoProvider::MicrosoftCryptoProvider()
{
	if(!CryptAcquireContext(&m_hProvider, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
		throw OS_RNG_Err("CryptAcquireContext");
}

MicrosoftCryptoProvider::~MicrosoftCryptoProvider()
{
	CryptReleaseContext(m_hProvider, 0);
}

#endif

NonblockingRng::NonblockingRng()
{
#ifndef CRYPTOPP_WIN32_AVAILABLE
	m_fd = open("/dev/urandom",O_RDONLY);
	if (m_fd == -1)
		throw OS_RNG_Err("open /dev/urandom");
#endif
}

NonblockingRng::~NonblockingRng()
{
#ifndef CRYPTOPP_WIN32_AVAILABLE
	close(m_fd);
#endif
}

byte NonblockingRng::GenerateByte()
{
	byte b;
	GenerateBlock(&b, 1);
	return b;
}

void NonblockingRng::GenerateBlock(byte *output, unsigned int size)
{
#ifdef CRYPTOPP_WIN32_AVAILABLE
#	ifdef WORKAROUND_MS_BUG_Q258000
		static MicrosoftCryptoProvider m_Provider;
#	endif
	if (!CryptGenRandom(m_Provider.GetProviderHandle(), size, output))
		throw OS_RNG_Err("CryptGenRandom");
#else
	if (read(m_fd, output, size) != size)
		throw OS_RNG_Err("read /dev/urandom");
#endif
}

#endif

// *************************************************************

#ifdef BLOCKING_RNG_AVAILABLE

BlockingRng::BlockingRng()
{
	m_fd = open("/dev/random",O_RDONLY);
	if (m_fd == -1)
		throw OS_RNG_Err("open /dev/random");
}

BlockingRng::~BlockingRng()
{
	close(m_fd);
}

byte BlockingRng::GenerateByte()
{
	byte b;
	GenerateBlock(&b, 1);
	return b;
}

void BlockingRng::GenerateBlock(byte *output, unsigned int size)
{
	while (size)
	{
		// on some systems /dev/random will block until all bytes
		// are available, on others it will returns immediately
		int len = read(m_fd, output, STDMIN(size, (unsigned int)INT_MAX));
		if (len == -1)
			throw OS_RNG_Err("read /dev/random");
		size -= len;
		output += len;
		if (size)
			sleep(1);
	}
}

#endif

// *************************************************************

void OS_GenerateRandomBlock(bool blocking, byte *output, unsigned int size)
{
#ifdef NONBLOCKING_RNG_AVAILABLE
	if (blocking)
#endif
	{
#ifdef BLOCKING_RNG_AVAILABLE
		BlockingRng rng;
		rng.GenerateBlock(output, size);
#endif
	}

#ifdef BLOCKING_RNG_AVAILABLE
	if (!blocking)
#endif
	{
#ifdef NONBLOCKING_RNG_AVAILABLE
		NonblockingRng rng;
		rng.GenerateBlock(output, size);
#endif
	}
}

void AutoSeededRandomPool::Reseed(bool blocking, unsigned int seedSize)
{
	SecByteBlock seed(seedSize);
	OS_GenerateRandomBlock(blocking, seed, seedSize);
	Put(seed, seedSize);
}

NAMESPACE_END

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品区一区二区三| 美女网站在线免费欧美精品| 亚洲综合久久久久| 精品一区二区免费| 色菇凉天天综合网| 久久久99久久| 毛片一区二区三区| 欧美在线综合视频| 亚洲欧洲一区二区三区| 狠狠色丁香婷综合久久| 欧美一区二区视频在线观看2020| 国产精品久久99| 国产精品99久| 精品久久久久久久久久久院品网 | 精品捆绑美女sm三区| 亚洲免费在线视频一区 二区| 国内成人免费视频| 欧美精品久久久久久久多人混战| 亚洲日本欧美天堂| 成人精品视频一区二区三区尤物| 日韩欧美一区二区免费| 日韩制服丝袜先锋影音| 在线观看亚洲一区| 亚洲一区二区三区视频在线播放 | 天堂一区二区在线免费观看| 91在线视频免费观看| 国产精品网站在线观看| 国产成人一区二区精品非洲| www激情久久| 国产一区二区三区在线观看免费| 日韩视频一区在线观看| 蜜桃视频第一区免费观看| 欧美日韩精品系列| 丝袜美腿亚洲一区二区图片| 欧美日韩成人激情| 日韩极品在线观看| 欧美一级日韩免费不卡| 热久久免费视频| 1024成人网| 99久久99久久精品免费看蜜桃 | 亚洲三级理论片| 色综合久久88色综合天天免费| 中文字幕在线不卡一区二区三区 | 狠狠色丁香婷综合久久| 欧美成人精品1314www| 久久精品国产久精国产| 久久一二三国产| 成人性生交大片免费看在线播放 | 欧美日韩国产影片| 日韩av在线发布| 精品久久五月天| 国产精品1区2区| 成人免费在线观看入口| 日本韩国一区二区| 日本欧美肥老太交大片| 精品免费视频一区二区| 成人免费视频网站在线观看| 亚洲日本丝袜连裤袜办公室| 7777精品久久久大香线蕉| 激情综合网天天干| 最新成人av在线| 欧美日韩国产美| 国产盗摄女厕一区二区三区| 亚洲欧洲99久久| 69精品人人人人| 成熟亚洲日本毛茸茸凸凹| 亚洲国产精品久久人人爱蜜臀| 91精品国产综合久久久蜜臀粉嫩 | 久久日一线二线三线suv| 99久久精品国产观看| 亚洲mv在线观看| 国产欧美综合在线| 欧美熟乱第一页| 国产69精品久久久久毛片| 夜夜嗨av一区二区三区中文字幕 | 久久久蜜臀国产一区二区| 91丨porny丨中文| 麻豆精品一区二区综合av| 国产精品国产三级国产专播品爱网| 欧美又粗又大又爽| 国产白丝网站精品污在线入口| 亚洲成av人片观看| 亚洲日本护士毛茸茸| 日韩欧美在线123| 色综合久久88色综合天天| 久草精品在线观看| 午夜视频久久久久久| 国产精品国模大尺度视频| 日韩欧美中文字幕制服| 欧美性猛交xxxx乱大交退制版| 国产激情一区二区三区桃花岛亚洲| 亚洲国产精品一区二区久久| 国产精品美女久久久久aⅴ国产馆| 欧美久久久久中文字幕| 91丨porny丨在线| 懂色av噜噜一区二区三区av| 青青草97国产精品免费观看 | 亚洲激情图片一区| 欧美成人国产一区二区| 欧美日韩一区二区三区四区| av电影一区二区| 国产精品主播直播| 精品亚洲国内自在自线福利| 日韩国产在线观看| 亚洲成av人**亚洲成av**| 亚洲乱码国产乱码精品精小说| 中文欧美字幕免费| 国产亚洲精品资源在线26u| 91精品午夜视频| 欧美精选一区二区| 欧美日韩一本到| 欧美三级视频在线播放| 在线观看一区二区精品视频| 一本大道久久a久久综合婷婷| 99精品在线观看视频| 91在线国产观看| 色综合天天在线| 91福利国产成人精品照片| 色婷婷亚洲精品| 欧美日韩一本到| 91精品国模一区二区三区| 日韩欧美在线1卡| 亚洲精品一线二线三线无人区| 日韩欧美国产一区二区在线播放| 日韩一区二区麻豆国产| 日韩欧美国产一区二区在线播放| 日韩精品一区二| 久久久综合网站| 国产精品拍天天在线| 自拍偷拍国产精品| 亚洲国产中文字幕在线视频综合| 亚洲国产sm捆绑调教视频 | 久久国产精品无码网站| 激情综合五月婷婷| 成人黄色网址在线观看| 91在线观看视频| 在线播放91灌醉迷j高跟美女 | 国产日韩影视精品| 国产精品人人做人人爽人人添| 国产精品福利影院| 亚洲国产精品一区二区尤物区| 免费人成精品欧美精品| 国产精品一区免费在线观看| 99久久精品免费看国产| 欧美猛男男办公室激情| 久久老女人爱爱| 一区二区欧美在线观看| 麻豆精品国产传媒mv男同| 成人激情动漫在线观看| 欧美性色综合网| 国产欧美一区二区三区在线看蜜臀| 亚洲欧洲国产专区| 亚洲国产一区二区三区青草影视| 久国产精品韩国三级视频| 99riav久久精品riav| 欧美一卡二卡在线| 日韩美女视频一区二区| 日韩精品电影在线观看| 成人av高清在线| 3atv一区二区三区| 国产精品女上位| 免费看欧美女人艹b| 99热99精品| 久久一区二区三区国产精品| 亚洲资源在线观看| 成人午夜电影网站| 欧美一区国产二区| 激情欧美日韩一区二区| 在线视频国产一区| 国产日韩欧美综合在线| 日本中文字幕一区二区视频| 99久久久久久| 国产偷国产偷精品高清尤物| 日韩激情在线观看| 91国产免费观看| 中文字幕中文字幕一区二区| 久久黄色级2电影| 欧美久久一二区| 亚洲一区二区高清| 99久免费精品视频在线观看| 欧美成人一区二区三区片免费 | 欧美韩国一区二区| 九九精品视频在线看| 欧美三级中文字| 亚洲乱码一区二区三区在线观看| 国产传媒久久文化传媒| 精品久久一二三区| 青青草国产精品97视觉盛宴| 欧美日韩和欧美的一区二区| 亚洲乱码中文字幕| 一本色道**综合亚洲精品蜜桃冫| 国产精品网站一区| 成人自拍视频在线| 国产欧美日韩综合| 国产91清纯白嫩初高中在线观看| 精品国产亚洲一区二区三区在线观看 | 欧美videos大乳护士334| 全部av―极品视觉盛宴亚洲| 欧美精品三级在线观看| 三级精品在线观看|