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

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

?? modes.cpp

?? 提供rsa、 des、 md5等加密和hash算法
?? CPP
字號:
// modes.cpp - written and placed in the public domain by Wei Dai

#include "pch.h"

#ifndef CRYPTOPP_IMPORTS

#include "modes.h"

#ifndef NDEBUG
#include "des.h"
#endif

NAMESPACE_BEGIN(CryptoPP)

#ifndef NDEBUG
void Modes_TestInstantiations()
{
	CFB_Mode<DES>::Encryption m0;
	CFB_Mode<DES>::Decryption m1;
	OFB_Mode<DES>::Encryption m2;
	CTR_Mode<DES>::Encryption m3;
	ECB_Mode<DES>::Encryption m4;
	CBC_Mode<DES>::Encryption m5;
}
#endif

void CipherModeBase::SetKey(const byte *key, unsigned int length, const NameValuePairs &params)
{
	UncheckedSetKey(params, key, length, GetIVAndThrowIfInvalid(params));	// the underlying cipher will check the key length
}

void CipherModeBase::GetNextIV(byte *IV)
{
	if (!IsForwardTransformation())
		throw NotImplemented("CipherModeBase: GetNextIV() must be called on an encryption object");

	m_cipher->ProcessBlock(m_register);
	memcpy(IV, m_register, BlockSize());
}

void CTR_ModePolicy::SeekToIteration(lword iterationCount)
{
	int carry=0;
	for (int i=BlockSize()-1; i>=0; i--)
	{
		unsigned int sum = m_register[i] + byte(iterationCount) + carry;
		m_counterArray[i] = (byte) sum;
		carry = sum >> 8;
		iterationCount >>= 8;
	}
}

static inline void IncrementCounterByOne(byte *inout, unsigned int s)
{
	for (int i=s-1, carry=1; i>=0 && carry; i--)
		carry = !++inout[i];
}

static inline void IncrementCounterByOne(byte *output, const byte *input, unsigned int s)
{
	int i, carry;
	for (i=s-1, carry=1; i>=0 && carry; i--)
		carry = !(output[i] = input[i]+1);
	memcpy(output, input, i+1);
}

void CTR_ModePolicy::GetNextIV(byte *IV)
{
	IncrementCounterByOne(IV, m_counterArray, BlockSize());
}

inline void CTR_ModePolicy::ProcessMultipleBlocks(byte *output, const byte *input, unsigned int n)
{
	unsigned int s = BlockSize(), j = 0;
	for (unsigned int i=1; i<n; i++, j+=s)
		IncrementCounterByOne(m_counterArray + j + s, m_counterArray + j, s);
	m_cipher->ProcessAndXorMultipleBlocks(m_counterArray, input, output, n);
	IncrementCounterByOne(m_counterArray, m_counterArray + s*(n-1), s);
}

void CTR_ModePolicy::OperateKeystream(KeystreamOperation operation, byte *output, const byte *input, unsigned int iterationCount)
{
	unsigned int maxBlocks = m_cipher->OptimalNumberOfParallelBlocks();
	if (maxBlocks == 1)
	{
		unsigned int sizeIncrement = BlockSize();
		while (iterationCount)
		{
			m_cipher->ProcessAndXorBlock(m_counterArray, input, output);
			IncrementCounterByOne(m_counterArray, sizeIncrement);
			output += sizeIncrement;
			input += sizeIncrement;
			iterationCount -= 1;
		}
	}
	else
	{
		unsigned int sizeIncrement = maxBlocks * BlockSize();
		while (iterationCount >= maxBlocks)
		{
			ProcessMultipleBlocks(output, input, maxBlocks);
			output += sizeIncrement;
			input += sizeIncrement;
			iterationCount -= maxBlocks;
		}
		if (iterationCount > 0)
			ProcessMultipleBlocks(output, input, iterationCount);
	}
}

void CTR_ModePolicy::CipherResynchronize(byte *keystreamBuffer, const byte *iv)
{
	unsigned int s = BlockSize();
	CopyOrZero(m_register, iv, s);
	m_counterArray.New(s * m_cipher->OptimalNumberOfParallelBlocks());
	CopyOrZero(m_counterArray, iv, s);
}

void BlockOrientedCipherModeBase::UncheckedSetKey(const NameValuePairs &params, const byte *key, unsigned int length, const byte *iv)
{
	m_cipher->SetKey(key, length, params);
	ResizeBuffers();
	if (IsResynchronizable())
		Resynchronize(iv);
}

void BlockOrientedCipherModeBase::ProcessData(byte *outString, const byte *inString, unsigned int length)
{
	unsigned int s = BlockSize();
	assert(length % s == 0);
	unsigned int alignment = m_cipher->BlockAlignment();
	bool inputAlignmentOk = !RequireAlignedInput() || IsAlignedOn(inString, alignment);

	if (IsAlignedOn(outString, alignment))
	{
		if (inputAlignmentOk)
			ProcessBlocks(outString, inString, length / s);
		else
		{
			memcpy(outString, inString, length);
			ProcessBlocks(outString, outString, length / s);
		}
	}
	else
	{
		while (length)
		{
			if (inputAlignmentOk)
				ProcessBlocks(m_buffer, inString, 1);
			else
			{
				memcpy(m_buffer, inString, s);
				ProcessBlocks(m_buffer, m_buffer, 1);
			}
			memcpy(outString, m_buffer, s);
			inString += s;
			outString += s;
			length -= s;
		}
	}
}

void CBC_Encryption::ProcessBlocks(byte *outString, const byte *inString, unsigned int numberOfBlocks)
{
	unsigned int blockSize = BlockSize();
	while (numberOfBlocks--)
	{
		xorbuf(m_register, inString, blockSize);
		m_cipher->ProcessBlock(m_register);
		memcpy(outString, m_register, blockSize);
		inString += blockSize;
		outString += blockSize;
	}
}

void CBC_CTS_Encryption::ProcessLastBlock(byte *outString, const byte *inString, unsigned int length)
{
	if (length <= BlockSize())
	{
		if (!m_stolenIV)
			throw InvalidArgument("CBC_Encryption: message is too short for ciphertext stealing");

		// steal from IV
		memcpy(outString, m_register, length);
		outString = m_stolenIV;
	}
	else
	{
		// steal from next to last block
		xorbuf(m_register, inString, BlockSize());
		m_cipher->ProcessBlock(m_register);
		inString += BlockSize();
		length -= BlockSize();
		memcpy(outString+BlockSize(), m_register, length);
	}

	// output last full ciphertext block
	xorbuf(m_register, inString, length);
	m_cipher->ProcessBlock(m_register);
	memcpy(outString, m_register, BlockSize());
}

void CBC_Decryption::ProcessBlocks(byte *outString, const byte *inString, unsigned int numberOfBlocks)
{
	unsigned int blockSize = BlockSize();
	while (numberOfBlocks--)
	{
		memcpy(m_temp, inString, blockSize);
		m_cipher->ProcessBlock(m_temp, outString);
		xorbuf(outString, m_register, blockSize);
		m_register.swap(m_temp);
		inString += blockSize;
		outString += blockSize;
	}
}

void CBC_CTS_Decryption::ProcessLastBlock(byte *outString, const byte *inString, unsigned int length)
{
	const byte *pn, *pn1;
	bool stealIV = length <= BlockSize();

	if (stealIV)
	{
		pn = inString;
		pn1 = m_register;
	}
	else
	{
		pn = inString + BlockSize();
		pn1 = inString;
		length -= BlockSize();
	}

	// decrypt last partial plaintext block
	memcpy(m_temp, pn1, BlockSize());
	m_cipher->ProcessBlock(m_temp);
	xorbuf(m_temp, pn, length);

	if (stealIV)
		memcpy(outString, m_temp, length);
	else
	{
		memcpy(outString+BlockSize(), m_temp, length);
		// decrypt next to last plaintext block
		memcpy(m_temp, pn, length);
		m_cipher->ProcessBlock(m_temp);
		xorbuf(outString, m_temp, m_register, BlockSize());
	}
}

NAMESPACE_END

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合久久av| 成人午夜电影网站| 色婷婷香蕉在线一区二区| 久久久亚洲国产美女国产盗摄 | 91久久线看在观草草青青 | 欧美精品丝袜久久久中文字幕| 国产麻豆9l精品三级站| 国产精品免费av| 久久久五月婷婷| 亚洲一区二区在线观看视频 | 国产亚洲欧美色| 成人禁用看黄a在线| 极品少妇一区二区三区精品视频| 夜夜亚洲天天久久| 亚洲成av人综合在线观看| 亚洲欧美在线观看| 亚洲色欲色欲www在线观看| 亚洲欧美国产77777| 亚洲精品中文在线影院| 亚洲国产一区二区三区| 日本在线播放一区二区三区| 舔着乳尖日韩一区| 成人性生交大片| 精品国精品国产| 亚洲国产经典视频| 五月婷婷欧美视频| 欧美一区二区国产| 国产精品网站导航| 波波电影院一区二区三区| 91国偷自产一区二区使用方法| 国产午夜精品久久| 成人毛片在线观看| 亚洲精品videosex极品| 色婷婷综合久久久中文字幕| 亚洲成人av免费| 欧美电影免费观看高清完整版在线 | 精品日韩在线一区| 日韩欧美一区二区在线视频| 91精品啪在线观看国产60岁| 日本一二三四高清不卡| 91亚洲精品乱码久久久久久蜜桃| 欧美日韩国产首页| 亚洲天堂2014| 欧美日韩国产综合一区二区| 麻豆精品久久精品色综合| 国产精品 欧美精品| 在线免费观看不卡av| 国产日韩欧美制服另类| 伦理电影国产精品| 色天天综合色天天久久| 日韩av不卡在线观看| 亚洲男女毛片无遮挡| 2021中文字幕一区亚洲| 激情深爱一区二区| 精品国产污污免费网站入口| 欧美视频一区二区三区在线观看| 亚洲va中文字幕| 欧美a级一区二区| 国产精品夫妻自拍| 欧美剧情片在线观看| 精品制服美女久久| 午夜a成v人精品| 日本三级亚洲精品| 肉色丝袜一区二区| 亚洲精品一区在线观看| 日韩欧美亚洲国产另类| 91精选在线观看| 制服丝袜亚洲播放| 884aa四虎影成人精品一区| 欧美视频在线播放| 日韩你懂的在线播放| 欧美精品一区二区三区蜜臀| 久久嫩草精品久久久精品一| 国产女人水真多18毛片18精品视频| 精品久久久久久综合日本欧美| 欧美韩日一区二区三区四区| 1000部国产精品成人观看| 一区二区三区在线看| 日韩av在线免费观看不卡| 精品一区二区精品| 欧美性色欧美a在线播放| 欧美xxxxx牲另类人与| 亚洲视频一区二区在线| 免费成人av在线播放| 91视频一区二区| 精品福利一二区| 午夜激情久久久| 欧美亚洲国产一区二区三区| 欧美成人一区二区三区片免费| 亚洲精品国产精品乱码不99| 天天色天天爱天天射综合| 国产精品福利影院| 丝袜美腿成人在线| 99久久国产免费看| 久草热8精品视频在线观看| 欧美伊人久久大香线蕉综合69 | 在线免费精品视频| 中文字幕一区二区三区乱码在线| 青青草国产成人99久久| 欧美日韩一区二区在线视频| 亚洲精品一二三| 亚洲成人av资源| 欧美日韩精品一区二区| 一区二区视频在线| 成人免费福利片| 亚洲欧洲韩国日本视频| 国产成人免费在线观看不卡| 日韩三级免费观看| 亚洲精品成人悠悠色影视| 国产一区久久久| 久久亚洲综合色一区二区三区| 亚洲成人tv网| 亚洲一区电影777| 99免费精品视频| 亚洲国产精品麻豆| 久久综合久久综合久久综合| 国产精品一品二品| 色哟哟国产精品免费观看| 亚洲日本va午夜在线影院| 精品国产一区二区三区四区四 | 亚洲一二三专区| 91精品在线麻豆| 成人午夜碰碰视频| 精品在线播放午夜| 日韩一区有码在线| 精品国产伦一区二区三区免费| 青青草97国产精品免费观看 | 懂色一区二区三区免费观看| 欧美美女直播网站| 日本中文在线一区| 国产精品美女久久久久久2018| 欧美人与性动xxxx| 国产精品一线二线三线| 免费成人结看片| 日韩精品乱码免费| 蜜臀精品久久久久久蜜臀 | 国产精品美日韩| 精品少妇一区二区三区视频免付费 | 欧美日韩成人综合| 91精品综合久久久久久| 国产伦精品一区二区三区在线观看| 一区二区三区免费在线观看| 国产精品毛片久久久久久久| 亚洲国产成人私人影院tom| 日韩精品一区二区三区视频播放| 欧美亚洲日本国产| eeuss鲁一区二区三区| 成人激情小说网站| 色94色欧美sute亚洲线路一ni| 99在线视频精品| 欧美在线综合视频| 欧美精品一区二区三区在线| 亚洲精品在线免费观看视频| 国产精品全国免费观看高清 | 91麻豆精品国产综合久久久久久| 91精品国产综合久久久久| 精品国精品国产| 亚洲色图都市小说| 韩国成人精品a∨在线观看| 99国产欧美另类久久久精品| 在线播放国产精品二区一二区四区| 欧美三区在线观看| 久久女同互慰一区二区三区| 日本一区二区视频在线| 天天av天天翘天天综合网色鬼国产| 理论片日本一区| 欧美亚一区二区| 国产精品毛片久久久久久| 激情综合色播激情啊| 欧美亚洲免费在线一区| 精品精品欲导航| 亚洲小说春色综合另类电影| 国产剧情一区二区三区| 日韩欧美一区电影| 日韩va欧美va亚洲va久久| 精品视频在线免费观看| 中文字幕一区二区三区四区不卡| 狠狠久久亚洲欧美| 国产日本亚洲高清| 懂色中文一区二区在线播放| 久久婷婷国产综合精品青草| 性做久久久久久久免费看| 成人毛片老司机大片| 欧美一区二区三区人| 亚洲国产精品久久艾草纯爱 | 五月天视频一区| 欧美成人vps| 国产aⅴ精品一区二区三区色成熟| 国产三级精品视频| 成人免费视频视频在线观看免费| 国产三级一区二区三区| 色综合久久99| 日韩精品一二三四| 国产婷婷精品av在线| 本田岬高潮一区二区三区| 亚洲自拍偷拍综合| 久久综合九色综合欧美就去吻| av在线一区二区| 丝袜美腿亚洲综合| 综合欧美亚洲日本|