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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cryptlib.cpp

?? 研讀AxCrypt對加解密的處理方法
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// cryptlib.cpp - written and placed in the public domain by Wei Dai

#include "pch.h"

#ifndef CRYPTOPP_IMPORTS

#include "cryptlib.h"
#include "misc.h"
#include "filters.h"
#include "algparam.h"
#include "fips140.h"
#include "argnames.h"
#include "fltrimpl.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
#ifdef CRYPTOPP_NATIVE_DWORD_AVAILABLE
CRYPTOPP_COMPILE_ASSERT(sizeof(dword) == 2*sizeof(word));
#endif

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 a power-up 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 SimpleKeyingInterface::ThrowIfResynchronizable()
{
	if (IsResynchronizable())
		throw InvalidArgument("SimpleKeyingInterface: this object requires an IV");
}

void SimpleKeyingInterface::ThrowIfInvalidIV(const byte *iv)
{
	if (!iv && !(IVRequirement() == INTERNALLY_GENERATED_IV || IVRequirement() == STRUCTURED_IV || !IsResynchronizable()))
		throw InvalidArgument("SimpleKeyingInterface: this object cannot use a null IV");
}

const byte * SimpleKeyingInterface::GetIVAndThrowIfInvalid(const NameValuePairs &params)
{
	const byte *iv;
	if (params.GetValue(Name::IV(), iv))
		ThrowIfInvalidIV(iv);
	else
		ThrowIfResynchronizable();
	return iv;
}

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();
}

//! see NullRNG()
class ClassNullRNG : 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");}
};

RandomNumberGenerator & NullRNG()
{
	static ClassNullRNG 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);
}

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;
	}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久久av影院 | 精品亚洲aⅴ乱码一区二区三区| 亚洲一区二区三区三| 天天综合网天天综合色| 国产一区二区三区最好精华液 | 午夜欧美视频在线观看| 麻豆成人av在线| 粉嫩av一区二区三区| 欧美综合视频在线观看| 欧美tickling挠脚心丨vk| 18成人在线观看| 亚洲国产精品自拍| 狠狠色丁香久久婷婷综合_中 | 亚洲三级理论片| 有坂深雪av一区二区精品| 国内外成人在线| 91福利在线看| 中文一区二区在线观看| 免费欧美日韩国产三级电影| 精品综合久久久久久8888| 成人午夜看片网址| 在线不卡a资源高清| 中文av字幕一区| 国产一区二区视频在线播放| 色综合色狠狠综合色| 久久毛片高清国产| 日韩电影网1区2区| 91在线精品秘密一区二区| 久久五月婷婷丁香社区| 免费在线欧美视频| 欧洲精品在线观看| 国产午夜精品一区二区| 久久99精品久久久久久| 91久久精品日日躁夜夜躁欧美| 国产偷v国产偷v亚洲高清| 亚洲成av人片一区二区梦乃| aaa国产一区| 中文字幕 久热精品 视频在线 | 欧美二区在线观看| 国产精品国产自产拍高清av| 老司机一区二区| 91精品国产91久久久久久一区二区 | 成人av在线看| 国产欧美综合在线观看第十页| 亚洲综合偷拍欧美一区色| 成人夜色视频网站在线观看| 日韩三级视频中文字幕| 一区二区三区四区中文字幕| av在线不卡免费看| 中文字幕成人网| 国产**成人网毛片九色| 久久久久久黄色| 免费一区二区视频| 精品国产一区二区三区不卡 | 91福利在线播放| 精品一区二区三区蜜桃| 久久久久国产精品麻豆ai换脸| 免费一区二区视频| 精品国产伦理网| 91蜜桃网址入口| 尤物av一区二区| 欧美精品少妇一区二区三区 | 久久91精品国产91久久小草| 九一九一国产精品| 粉嫩av一区二区三区在线播放| 国产剧情一区二区三区| 精品成人一区二区| 国产成人午夜99999| 欧美电影免费观看高清完整版在线观看 | 国产三级欧美三级日产三级99| 精品无码三级在线观看视频 | 91精品国产综合久久福利软件| 视频在线在亚洲| 精品美女一区二区| 国产成人欧美日韩在线电影| 国产午夜亚洲精品羞羞网站| 精品中文字幕一区二区小辣椒| 国产欧美日韩在线看| 97se狠狠狠综合亚洲狠狠| 久久国产精品露脸对白| 国产欧美一区二区精品忘忧草| 欧美三级韩国三级日本三斤| 国产一区二区在线视频| 亚洲一区免费在线观看| 久久久久综合网| 91精品国产色综合久久不卡蜜臀| 99久久婷婷国产| 精品一区二区在线播放| 午夜久久电影网| 亚洲免费观看高清完整版在线观看| 欧美哺乳videos| 欧美精品在线视频| 色婷婷av一区| 成人综合日日夜夜| 国内精品久久久久影院一蜜桃| 亚洲一二三四区| 中文字幕亚洲在| 欧美mv日韩mv亚洲| 4438x亚洲最大成人网| 色婷婷国产精品久久包臀| 成人午夜av影视| 国产美女av一区二区三区| 日本aⅴ亚洲精品中文乱码| 亚洲一区二区综合| 亚洲私人影院在线观看| 国产女主播视频一区二区| 久久一日本道色综合| 日韩一区二区三区三四区视频在线观看| 91啪亚洲精品| 91蝌蚪国产九色| 91女厕偷拍女厕偷拍高清| 成人免费精品视频| 成人激情文学综合网| 大美女一区二区三区| 久久国内精品自在自线400部| 日韩高清不卡在线| 麻豆精品在线观看| 久久精品国产一区二区三| 久久国产精品色| 国产制服丝袜一区| 国产成a人亚洲精| 不卡一区二区在线| 色综合天天综合给合国产| 色婷婷激情一区二区三区| 欧美日韩中字一区| 欧美精品日韩综合在线| 日韩免费看的电影| 精品国产乱码久久久久久图片 | 国模无码大尺度一区二区三区| 蜜臀av一区二区在线免费观看| 美女尤物国产一区| 国产河南妇女毛片精品久久久| 懂色av一区二区三区蜜臀| 成人国产亚洲欧美成人综合网| av中文字幕亚洲| 欧美日韩成人在线| 久久久综合九色合综国产精品| 国产日本欧美一区二区| 自拍av一区二区三区| 亚洲一区免费视频| 精品伊人久久久久7777人| 懂色一区二区三区免费观看| 色域天天综合网| 日韩欧美一二区| 国产精品护士白丝一区av| 亚洲国产精品久久久久秋霞影院| 麻豆成人av在线| 97超碰欧美中文字幕| 欧美一区二区三区日韩视频| 久久精品人人做人人爽97| 亚洲人成小说网站色在线 | 伊人夜夜躁av伊人久久| 麻豆国产欧美一区二区三区| 成人av动漫在线| 日韩亚洲欧美一区| 中文字幕日韩一区二区| 日韩精品电影在线观看| 99精品热视频| 日韩西西人体444www| 亚洲人成精品久久久久| 精品在线一区二区| 欧美影院一区二区| 中文字幕电影一区| 久久99深爱久久99精品| 欧美亚洲一区二区三区四区| 精品少妇一区二区三区在线播放 | 久久精品这里都是精品| 亚洲五码中文字幕| kk眼镜猥琐国模调教系列一区二区| 欧美日韩国产大片| 国产精品电影一区二区三区| 精品一区二区综合| 91精品黄色片免费大全| 亚洲免费观看高清完整版在线观看| 另类小说综合欧美亚洲| 精品视频一区二区三区免费| 国产女人水真多18毛片18精品视频| 日韩国产高清在线| 欧美日韩一区二区在线观看视频| 成人欧美一区二区三区小说| 激情另类小说区图片区视频区| 欧美日韩精品欧美日韩精品一综合| 中文一区二区在线观看| 国产精品1区2区3区| www国产精品av| 琪琪久久久久日韩精品| 欧美熟乱第一页| 亚洲高清免费在线| 欧美日韩成人高清| 天堂蜜桃91精品| 欧美视频在线播放| 亚洲影院理伦片| 欧美亚洲综合另类| 亚洲九九爱视频| 欧美三级日本三级少妇99| 一区二区欧美国产| 在线观看亚洲精品视频| 中文字幕色av一区二区三区| 成人99免费视频| 一区二区三区久久|