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

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

?? modes.cpp

?? 此壓縮包內有cast、blowfish、simple、des、cryptlib、rsa、mqueue、xtrcrypt、gf256、base32,base64、modexppc、network等一些的
?? 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 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;
	}
}

inline void CTR_ModePolicy::ProcessMultipleBlocks(byte *output, const byte *input, size_t 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, size_t iterationCount)
{
	assert(m_cipher->IsForwardTransformation());	// CTR mode needs the "encrypt" direction of the underlying block cipher, even to decrypt
	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 byte *key, unsigned int length, const NameValuePairs &params)
{
	m_cipher->SetKey(key, length, params);
	ResizeBuffers();
	if (IsResynchronizable())
		Resynchronize(GetIVAndThrowIfInvalid(params));
}

void BlockOrientedCipherModeBase::ProcessData(byte *outString, const byte *inString, size_t length)
{
	if (!length)
		return;

	unsigned int s = BlockSize();
	assert(length % s == 0);

	if (!RequireAlignedInput() || IsAlignedOn(inString, m_cipher->BlockAlignment()))
		ProcessBlocks(outString, inString, length / s);
	else
	{
		do
		{
			memcpy(m_buffer, inString, s);
			ProcessBlocks(outString, m_buffer, 1);
			inString += s;
			outString += s;
			length -= s;
		} while (length > 0);
	}
}

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

void CBC_CTS_Encryption::ProcessLastBlock(byte *outString, const byte *inString, size_t 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, size_t numberOfBlocks)
{
	unsigned int blockSize = BlockSize();
	do
	{
		memcpy(m_temp, inString, blockSize);	// make copy in case we're doing in place decryption
		m_cipher->ProcessAndXorBlock(m_temp, m_register, outString);
		m_register.swap(m_temp);
		inString += blockSize;
		outString += blockSize;
	} while (--numberOfBlocks);
}

void CBC_CTS_Decryption::ProcessLastBlock(byte *outString, const byte *inString, size_t 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一区二区三区免费野_久草精品视频
五月天激情综合网| 91麻豆精品秘密| 99国产精品久久久| 欧美一区二区三区影视| 亚洲视频1区2区| 精品无码三级在线观看视频| 日本韩国欧美一区二区三区| 中文字幕高清不卡| 蜜臀av亚洲一区中文字幕| 色婷婷久久综合| 国产精品久久久久久福利一牛影视 | 欧美精品1区2区3区| 中文字幕第一区二区| 久久66热偷产精品| 欧美日韩亚洲丝袜制服| 亚洲女同ⅹxx女同tv| 成人综合在线观看| 久久婷婷久久一区二区三区| 日本不卡在线视频| 欧美日韩中文国产| 亚洲免费视频成人| av网站一区二区三区| 国产拍欧美日韩视频二区| 麻豆精品视频在线观看视频| 91精品国产综合久久蜜臀| 亚洲综合色婷婷| 欧美性色综合网| 一区二区三区在线视频免费观看| 成人午夜视频福利| 日本一区二区三区四区| 国产成人综合在线| 久久久国产一区二区三区四区小说| 麻豆精品蜜桃视频网站| 日韩美女一区二区三区四区| 日本不卡一区二区三区高清视频| 欧美人伦禁忌dvd放荡欲情| 性久久久久久久久久久久| 欧美日本在线看| 免费成人你懂的| 精品三级av在线| 国产一区二区在线视频| 国产亚洲欧美日韩日本| 风间由美一区二区av101| 国产欧美一区二区精品秋霞影院| 国产成人午夜视频| 国产精品蜜臀av| 色又黄又爽网站www久久| 亚洲一区二区四区蜜桃| 3atv一区二区三区| 久久91精品国产91久久小草| 欧美国产日韩在线观看| 日本精品一区二区三区高清 | 精品国产乱码久久久久久夜甘婷婷 | 欧美日韩一区二区三区在线看| 亚洲国产精品自拍| 欧美一二三区在线| 国产精品一区二区x88av| 国产精品婷婷午夜在线观看| 在线观看一区二区精品视频| 日本视频中文字幕一区二区三区| 精品国产免费久久| 色呦呦网站一区| 蜜桃久久久久久久| 中文字幕日韩精品一区| 精品处破学生在线二十三| 成人听书哪个软件好| 亚洲综合男人的天堂| www国产精品av| 91丝袜美女网| 久久99精品久久久久久动态图| 欧美激情艳妇裸体舞| 欧美日韩一级视频| 丁香婷婷深情五月亚洲| 亚洲18影院在线观看| 国产日本亚洲高清| 欧美性xxxxx极品少妇| 国内精品不卡在线| 一级日本不卡的影视| 欧美xxxxxxxx| 欧美日韩午夜影院| 成人精品高清在线| 久久99国产精品久久99果冻传媒| 亚洲精品综合在线| 久久综合成人精品亚洲另类欧美| 日本电影亚洲天堂一区| 国产毛片精品国产一区二区三区| 亚洲福利视频三区| 国产精品久久久久影院| 久久综合五月天婷婷伊人| 欧美日韩大陆一区二区| 99国产精品久久久久| 国产精品夜夜嗨| 免费成人在线观看视频| 亚洲一区二区欧美激情| **性色生活片久久毛片| 国产区在线观看成人精品| 日韩亚洲国产中文字幕欧美| 在线亚洲精品福利网址导航| 成人av小说网| 成人午夜精品一区二区三区| 精品一区二区免费看| 天天色天天操综合| 亚洲黄色性网站| 亚洲色图20p| 国产精品理论在线观看| 国产无人区一区二区三区| 欧美tickling网站挠脚心| 91麻豆精品国产无毒不卡在线观看| 色综合天天综合| 99精品国产视频| 99re热这里只有精品视频| 成人黄色小视频| 成人小视频在线观看| 国产一区二区视频在线播放| 国产在线乱码一区二区三区| 看片的网站亚洲| 国产专区综合网| 国产精品正在播放| 国产91丝袜在线18| 成人不卡免费av| 色综合久久中文综合久久97| 91麻豆123| 国产视频一区二区在线观看| 久久久精品中文字幕麻豆发布| 久久天天做天天爱综合色| 国产亚洲人成网站| 中文字幕在线一区二区三区| 亚洲视频资源在线| 亚洲一区二区不卡免费| 亚洲成人福利片| 久久99精品国产麻豆婷婷洗澡| 国产揄拍国内精品对白| 成人午夜免费av| 在线观看亚洲专区| 欧美精品1区2区| 亚洲精品一区在线观看| 国产精品伦一区二区三级视频| 亚洲日本va午夜在线影院| 亚洲成人av一区二区| 久久av中文字幕片| 高清免费成人av| 欧美性生活影院| 精品理论电影在线观看| 国产精品大尺度| 亚洲国产精品一区二区尤物区| 乱中年女人伦av一区二区| 成人一区二区三区视频| 欧美性极品少妇| 久久久久久久综合狠狠综合| 亚洲三级在线看| 麻豆一区二区在线| 91免费小视频| 精品久久久久久久一区二区蜜臀| 亚洲图片欧美激情| 日韩**一区毛片| 99国产精品久久久久久久久久久| 91精品国产综合久久久久久久 | 色婷婷综合久色| 欧美男生操女生| 国产欧美一区二区精品秋霞影院 | 91久久精品一区二区三区| 日韩一区二区免费高清| 亚洲色图视频免费播放| 日韩不卡一区二区| 成人黄色av电影| 欧美一级黄色片| 亚洲男人天堂一区| 国模一区二区三区白浆| 一本一道波多野结衣一区二区| 欧美一级免费观看| 亚洲精品国产精华液| 国产一区美女在线| 欧美精品高清视频| 亚洲天堂中文字幕| 国产成人av影院| 欧美一区二区视频网站| 亚洲一区二区三区四区不卡| 成人网在线播放| 久久蜜桃一区二区| 日韩经典中文字幕一区| 色就色 综合激情| 国产精品美女久久久久aⅴ国产馆| 日韩国产欧美在线播放| 在线观看国产日韩| 亚洲三级免费电影| jlzzjlzz亚洲日本少妇| 久久久精品免费免费| 久久99精品久久久久久国产越南 | 欧美少妇性性性| 亚洲欧美激情在线| 成人精品一区二区三区四区 | 欧美日韩国产综合一区二区三区| 亚洲同性gay激情无套| 成人综合在线观看| 国产日产精品一区| 国产一区二区按摩在线观看| 精品99999| 国产一区 二区| 国产女主播在线一区二区| 成人综合激情网|