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

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

?? cryptlib.cpp

?? 加密函數(shù)庫:包括多種加密解密算法,數(shù)字簽名,散列算法
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// cryptlib.cpp - written and placed in the public domain by Wei Dai

#include "pch.h"
#include "cryptlib.h"
#include "misc.h"
#include "filters.h"
#include "algparam.h"
#include "fips140.h"
#include "argnames.h"

#include <memory>

NAMESPACE_BEGIN(CryptoPP)

CRYPTOPP_COMPILE_ASSERT(sizeof(byte) == 1);
CRYPTOPP_COMPILE_ASSERT(sizeof(word16) == 2);
CRYPTOPP_COMPILE_ASSERT(sizeof(word32) == 4);
#ifdef WORD64_AVAILABLE
CRYPTOPP_COMPILE_ASSERT(sizeof(word64) == 8);
#endif
CRYPTOPP_COMPILE_ASSERT(sizeof(dword) == 2*sizeof(word));

const std::string BufferedTransformation::NULL_CHANNEL;
const NullNameValuePairs g_nullNameValuePairs;

BufferedTransformation & TheBitBucket()
{
	static BitBucket bitBucket;
	return bitBucket;
}

Algorithm::Algorithm(bool checkSelfTestStatus)
{
	if (checkSelfTestStatus && FIPS_140_2_ComplianceEnabled())
	{
		if (GetPowerUpSelfTestStatus() == POWER_UP_SELF_TEST_NOT_DONE && !PowerUpSelfTestInProgressOnThisThread())
			throw SelfTestFailure("Cryptographic algorithms are disabled before the power-up self tests are performed.");

		if (GetPowerUpSelfTestStatus() == POWER_UP_SELF_TEST_FAILED)
			throw SelfTestFailure("Cryptographic algorithms are disabled after power-up a self test failed.");
	}
}

void SimpleKeyingInterface::SetKeyWithRounds(const byte *key, unsigned int length, int rounds)
{
	SetKey(key, length, MakeParameters(Name::Rounds(), rounds));
}

void SimpleKeyingInterface::SetKeyWithIV(const byte *key, unsigned int length, const byte *iv)
{
	SetKey(key, length, MakeParameters(Name::IV(), iv));
}

void SimpleKeyingInterface::ThrowIfInvalidKeyLength(const Algorithm &algorithm, unsigned int length)
{
	if (!IsValidKeyLength(length))
		throw InvalidKeyLength(algorithm.AlgorithmName(), length);
}

void BlockTransformation::ProcessAndXorMultipleBlocks(const byte *inBlocks, const byte *xorBlocks, byte *outBlocks, unsigned int numberOfBlocks) const
{
	unsigned int blockSize = BlockSize();
	while (numberOfBlocks--)
	{
		ProcessAndXorBlock(inBlocks, xorBlocks, outBlocks);
		inBlocks += blockSize;
		outBlocks += blockSize;
		if (xorBlocks)
			xorBlocks += blockSize;
	}
}

void StreamTransformation::ProcessLastBlock(byte *outString, const byte *inString, unsigned int length)
{
	assert(MinLastBlockSize() == 0);	// this function should be overriden otherwise

	if (length == MandatoryBlockSize())
		ProcessData(outString, inString, length);
	else if (length != 0)
		throw NotImplemented("StreamTransformation: this object does't support a special last block");
}

unsigned int RandomNumberGenerator::GenerateBit()
{
	return Parity(GenerateByte());
}

void RandomNumberGenerator::GenerateBlock(byte *output, unsigned int size)
{
	while (size--)
		*output++ = GenerateByte();
}

word32 RandomNumberGenerator::GenerateWord32(word32 min, word32 max)
{
	word32 range = max-min;
	const int maxBytes = BytePrecision(range);
	const int maxBits = BitPrecision(range);

	word32 value;

	do
	{
		value = 0;
		for (int i=0; i<maxBytes; i++)
			value = (value << 8) | GenerateByte();

		value = Crop(value, maxBits);
	} while (value > range);

	return value+min;
}

void RandomNumberGenerator::DiscardBytes(unsigned int n)
{
	while (n--)
		GenerateByte();
}

RandomNumberGenerator & NullRNG()
{
	class NullRNG : public RandomNumberGenerator
	{
	public:
		std::string AlgorithmName() const {return "NullRNG";}
		byte GenerateByte() {throw NotImplemented("NullRNG: NullRNG should only be passed to functions that don't need to generate random bytes");}
	};

	static NullRNG s_nullRNG;
	return s_nullRNG;
}

bool HashTransformation::TruncatedVerify(const byte *digestIn, unsigned int digestLength)
{
	ThrowIfInvalidTruncatedSize(digestLength);
	SecByteBlock digest(digestLength);
	TruncatedFinal(digest, digestLength);
	return memcmp(digest, digestIn, digestLength) == 0;
}

void HashTransformation::ThrowIfInvalidTruncatedSize(unsigned int size) const
{
	if (size > DigestSize())
		throw InvalidArgument("HashTransformation: can't truncate a " + IntToString(DigestSize()) + " byte digest to " + IntToString(size) + " bytes");
}

unsigned int BufferedTransformation::GetMaxWaitObjectCount() const
{
	const BufferedTransformation *t = AttachedTransformation();
	return t ? t->GetMaxWaitObjectCount() : 0;
}

void BufferedTransformation::GetWaitObjects(WaitObjectContainer &container)
{
	BufferedTransformation *t = AttachedTransformation();
	if (t)
		t->GetWaitObjects(container);
}

void BufferedTransformation::Initialize(const NameValuePairs &parameters, int propagation)
{
	assert(!AttachedTransformation());
	IsolatedInitialize(parameters);
}

bool BufferedTransformation::Flush(bool hardFlush, int propagation, bool blocking)
{
	assert(!AttachedTransformation());
	return IsolatedFlush(hardFlush, blocking);
}

bool BufferedTransformation::MessageSeriesEnd(int propagation, bool blocking)
{
	assert(!AttachedTransformation());
	return IsolatedMessageSeriesEnd(blocking);
}

byte * BufferedTransformation::ChannelCreatePutSpace(const std::string &channel, unsigned int &size)
{
	if (channel.empty())
		return CreatePutSpace(size);
	else
		throw NoChannelSupport();
}

unsigned int BufferedTransformation::ChannelPut2(const std::string &channel, const byte *begin, unsigned int length, int messageEnd, bool blocking)
{
	if (channel.empty())
		return Put2(begin, length, messageEnd, blocking);
	else
		throw NoChannelSupport();
}

unsigned int BufferedTransformation::ChannelPutModifiable2(const std::string &channel, byte *begin, unsigned int length, int messageEnd, bool blocking)
{
	if (channel.empty())
		return PutModifiable2(begin, length, messageEnd, blocking);
	else
		return ChannelPut2(channel, begin, length, messageEnd, blocking);
}

void BufferedTransformation::ChannelInitialize(const std::string &channel, const NameValuePairs &parameters, int propagation)
{
	if (channel.empty())
		Initialize(parameters, propagation);
	else
		throw NoChannelSupport();
}

bool BufferedTransformation::ChannelFlush(const std::string &channel, bool completeFlush, int propagation, bool blocking)
{
	if (channel.empty())
		return Flush(completeFlush, propagation, blocking);
	else
		throw NoChannelSupport();
}

bool BufferedTransformation::ChannelMessageSeriesEnd(const std::string &channel, int propagation, bool blocking)
{
	if (channel.empty())
		return MessageSeriesEnd(propagation, blocking);
	else
		throw NoChannelSupport();
}

unsigned long BufferedTransformation::MaxRetrievable() const
{
	if (AttachedTransformation())
		return AttachedTransformation()->MaxRetrievable();
	else
		return CopyTo(TheBitBucket());
}

bool BufferedTransformation::AnyRetrievable() const
{
	if (AttachedTransformation())
		return AttachedTransformation()->AnyRetrievable();
	else
	{
		byte b;
		return Peek(b) != 0;
	}
}

unsigned int BufferedTransformation::Get(byte &outByte)
{
	if (AttachedTransformation())
		return AttachedTransformation()->Get(outByte);
	else
		return Get(&outByte, 1);
}

unsigned int BufferedTransformation::Get(byte *outString, unsigned int getMax)
{
	if (AttachedTransformation())
		return AttachedTransformation()->Get(outString, getMax);
	else
	{
		ArraySink arraySink(outString, getMax);
		return TransferTo(arraySink, getMax);
	}
}

unsigned int BufferedTransformation::Peek(byte &outByte) const
{
	if (AttachedTransformation())
		return AttachedTransformation()->Peek(outByte);
	else
		return Peek(&outByte, 1);
}

unsigned int BufferedTransformation::Peek(byte *outString, unsigned int peekMax) const
{
	if (AttachedTransformation())
		return AttachedTransformation()->Peek(outString, peekMax);
	else
	{
		ArraySink arraySink(outString, peekMax);
		return CopyTo(arraySink, peekMax);
	}
}

unsigned long BufferedTransformation::Skip(unsigned long skipMax)
{
	if (AttachedTransformation())
		return AttachedTransformation()->Skip(skipMax);
	else
		return TransferTo(TheBitBucket(), skipMax);
}

unsigned long BufferedTransformation::TotalBytesRetrievable() const
{
	if (AttachedTransformation())
		return AttachedTransformation()->TotalBytesRetrievable();
	else
		return MaxRetrievable();
}

unsigned int BufferedTransformation::NumberOfMessages() const
{
	if (AttachedTransformation())
		return AttachedTransformation()->NumberOfMessages();
	else
		return CopyMessagesTo(TheBitBucket());
}

bool BufferedTransformation::AnyMessages() const
{
	if (AttachedTransformation())
		return AttachedTransformation()->AnyMessages();
	else
		return NumberOfMessages() != 0;
}

bool BufferedTransformation::GetNextMessage()
{
	if (AttachedTransformation())
		return AttachedTransformation()->GetNextMessage();
	else
	{
		assert(!AnyMessages());
		return false;
	}
}

unsigned int BufferedTransformation::SkipMessages(unsigned int count)
{
	if (AttachedTransformation())
		return AttachedTransformation()->SkipMessages(count);
	else
		return TransferMessagesTo(TheBitBucket(), count);
}

unsigned int BufferedTransformation::TransferMessagesTo2(BufferedTransformation &target, unsigned int &messageCount, const std::string &channel, bool blocking)
{
	if (AttachedTransformation())
		return AttachedTransformation()->TransferMessagesTo2(target, messageCount, channel, blocking);
	else
	{
		unsigned int maxMessages = messageCount;
		for (messageCount=0; messageCount < maxMessages && AnyMessages(); messageCount++)
		{
			unsigned int blockedBytes;
			unsigned long transferedBytes;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品亚洲午夜麻豆| 91精品国产麻豆国产自产在线| 久久久91精品国产一区二区精品 | 日韩av电影一区| 色综合视频在线观看| 最新中文字幕一区二区三区| 国产精品一区二区在线观看不卡| 欧美人体做爰大胆视频| 亚洲综合在线视频| 欧美亚洲日本国产| 婷婷六月综合亚洲| 欧美一二三四在线| 国产精品自拍一区| 亚洲欧美综合另类在线卡通| av一区二区久久| 亚洲一区二区影院| 日韩欧美精品在线视频| 黑人巨大精品欧美黑白配亚洲 | 精品在线亚洲视频| 中文欧美字幕免费| 91色在线porny| 日本中文字幕一区二区有限公司| 在线电影一区二区三区| 六月婷婷色综合| 中文字幕av一区二区三区高| 在线观看亚洲一区| 国产人久久人人人人爽| 欧美性xxxxx极品少妇| 久久精品国产亚洲高清剧情介绍| 26uuu精品一区二区| 成人av网在线| 蜜桃精品视频在线| 亚洲黄一区二区三区| 日韩一区二区在线看片| 一本到不卡免费一区二区| 五月天久久比比资源色| 国产精品成人一区二区艾草 | 国产精品免费av| 大尺度一区二区| 五月激情综合色| 国产精品久久久久久久久免费樱桃| 欧美精品欧美精品系列| 99久久婷婷国产| 国产 日韩 欧美大片| 免费观看久久久4p| 日韩高清一区二区| 日本网站在线观看一区二区三区| 亚洲丝袜自拍清纯另类| 国产精品丝袜91| 国产日韩av一区| 国产精品嫩草99a| 亚洲国产成人私人影院tom | 91小视频免费观看| kk眼镜猥琐国模调教系列一区二区| 国产尤物一区二区在线| 国产在线看一区| 精品亚洲欧美一区| 久久精工是国产品牌吗| 美国毛片一区二区| 美脚の诱脚舐め脚责91| 久久99国产乱子伦精品免费| 日韩二区三区在线观看| 精品一区二区日韩| 国产一区二区剧情av在线| 高清beeg欧美| 色婷婷久久久综合中文字幕| 欧美午夜精品久久久| 欧美一区二区私人影院日本| 欧美一二三四在线| 精品视频免费在线| 欧美年轻男男videosbes| 欧美精品乱码久久久久久按摩| 欧美巨大另类极品videosbest| 91精品国产综合久久久久久久久久| 欧美日韩精品高清| 欧美午夜精品久久久| 在线播放欧美女士性生活| 在线看一区二区| 精品毛片乱码1区2区3区| 九九视频精品免费| 蜜乳av一区二区| 国产精品自产自拍| 一本一道久久a久久精品| 欧美久久久久中文字幕| wwwwxxxxx欧美| 亚洲男女毛片无遮挡| 石原莉奈在线亚洲二区| 国产综合成人久久大片91| 国产乱国产乱300精品| 91美女片黄在线观看| 欧美一级生活片| 国产精品久久夜| 美女一区二区三区在线观看| 成人免费av网站| wwww国产精品欧美| 最新日韩在线视频| 国产成人精品三级| 日韩一级完整毛片| 亚洲成年人网站在线观看| 成人深夜视频在线观看| 欧美一级搡bbbb搡bbbb| 亚洲一区在线观看免费观看电影高清 | 日韩一区二区免费高清| 亚洲人成伊人成综合网小说| 国产福利一区二区| 日韩欧美资源站| 美腿丝袜亚洲三区| 欧美日韩在线综合| 性感美女久久精品| 成人激情小说网站| 日本一区二区综合亚洲| 亚洲成人精品在线观看| 欧美日韩成人综合天天影院| 亚洲一区在线观看免费 | 日本麻豆一区二区三区视频| 欧美视频在线一区二区三区| 亚洲高清免费一级二级三级| 99久久久久久99| 91成人在线免费观看| 一个色综合av| 91精品国产91久久综合桃花 | 91在线国产观看| 亚洲综合一二三区| 91麻豆精品国产无毒不卡在线观看| 一区二区欧美国产| 欧美日韩视频在线观看一区二区三区| 亚洲五月六月丁香激情| 欧美电影一区二区| 丝袜诱惑制服诱惑色一区在线观看| 欧美性受极品xxxx喷水| 欧美a级一区二区| 国产精品网站一区| 欧美精品三级日韩久久| 日本欧美一区二区三区乱码 | 秋霞成人午夜伦在线观看| 日韩一级免费观看| 国产中文一区二区三区| 日本一区二区三区四区在线视频 | 激情综合色播激情啊| 中文字幕一区二区三区不卡在线 | 日韩免费看的电影| 91在线国产观看| 国产传媒久久文化传媒| 午夜久久久影院| 亚洲裸体xxx| 久久久久88色偷偷免费| 欧美精品久久99| 日本道精品一区二区三区| 国产精品一级在线| 亚洲妇女屁股眼交7| 一区在线观看视频| 国产精品美女久久久久高潮| 精品免费一区二区三区| 91在线免费视频观看| 一区二区三区日韩| 欧美激情一区二区三区蜜桃视频| 91精品国产综合久久精品app| 欧美中文字幕一区| 欧美日韩视频在线一区二区| 8v天堂国产在线一区二区| 色综合天天综合狠狠| 成人国产视频在线观看| 99热在这里有精品免费| 色综合久久中文字幕综合网| 日本韩国一区二区三区| 国产日本欧美一区二区| 国产精品久久久久一区| 成人欧美一区二区三区在线播放| 亚洲天堂成人网| 日韩高清一区二区| 麻豆成人免费电影| 国产1区2区3区精品美女| 狠狠色丁香婷综合久久| 99久久久免费精品国产一区二区| 色综合久久88色综合天天免费| 色综合中文字幕国产 | 亚洲午夜久久久久中文字幕久| 亚洲五码中文字幕| 性久久久久久久久久久久| 依依成人精品视频| 五月天精品一区二区三区| 国产麻豆午夜三级精品| 欧美午夜电影网| 久久久噜噜噜久久中文字幕色伊伊 | 97se狠狠狠综合亚洲狠狠| 欧美日韩在线直播| 国产精品国产精品国产专区不片| 亚洲乱码中文字幕| 国产成人免费av在线| 日韩一区二区三区四区| 日韩伦理电影网| kk眼镜猥琐国模调教系列一区二区| 精品久久久久久久久久久久久久久 | 国产免费观看久久| 国产成人av影院| 欧美国产日产图区| 成人免费视频网站在线观看| 久久久久久久久久美女| 国产乱人伦偷精品视频免下载| 26uuu另类欧美|