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

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

?? modes.h

?? 研讀AxCrypt對加解密的處理方法
?? H
?? 第 1 頁 / 共 2 頁
字號:
#ifndef CRYPTOPP_MODES_H
#define CRYPTOPP_MODES_H

/*! \file
*/

#include "cryptlib.h"
#include "secblock.h"
#include "misc.h"
#include "strciphr.h"
#include "argnames.h"
#include "algparam.h"

NAMESPACE_BEGIN(CryptoPP)

//! Cipher mode documentation. See NIST SP 800-38A for definitions of these modes.

/*! Each class derived from this one defines two types, Encryption and Decryption, 
	both of which implement the SymmetricCipher interface.
	For each mode there are two classes, one of which is a template class,
	and the other one has a name that ends in "_ExternalCipher".
	The "external cipher" mode objects hold a reference to the underlying block cipher,
	instead of holding an instance of it. The reference must be passed in to the constructor.
	For the "cipher holder" classes, the CIPHER template parameter should be a class
	derived from BlockCipherDocumentation, for example DES or AES.
*/
struct CipherModeDocumentation : public SymmetricCipherDocumentation
{
};

class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE CipherModeBase : public SymmetricCipher
{
public:
	unsigned int MinKeyLength() const {return m_cipher->MinKeyLength();}
	unsigned int MaxKeyLength() const {return m_cipher->MaxKeyLength();}
	unsigned int DefaultKeyLength() const {return m_cipher->DefaultKeyLength();}
	unsigned int GetValidKeyLength(unsigned int n) const {return m_cipher->GetValidKeyLength(n);}
	bool IsValidKeyLength(unsigned int n) const {return m_cipher->IsValidKeyLength(n);}

	void SetKey(const byte *key, unsigned int length, const NameValuePairs &params = g_nullNameValuePairs);

	unsigned int OptimalDataAlignment() const {return BlockSize();}

	unsigned int IVSize() const {return BlockSize();}
	void GetNextIV(byte *IV);
	virtual IV_Requirement IVRequirement() const =0;

protected:
	inline unsigned int BlockSize() const {assert(m_register.size() > 0); return m_register.size();}
	virtual void SetFeedbackSize(unsigned int feedbackSize)
	{
		if (!(feedbackSize == 0 || feedbackSize == BlockSize()))
			throw InvalidArgument("CipherModeBase: feedback size cannot be specified for this cipher mode");
	}
	virtual void ResizeBuffers()
	{
		m_register.New(m_cipher->BlockSize());
	}
	virtual void UncheckedSetKey(const NameValuePairs &params, const byte *key, unsigned int length, const byte *iv) =0;

	BlockCipher *m_cipher;
	SecByteBlock m_register;
};

template <class POLICY_INTERFACE>
class CRYPTOPP_NO_VTABLE ModePolicyCommonTemplate : public CipherModeBase, public POLICY_INTERFACE
{
	unsigned int GetAlignment() const {return m_cipher->BlockAlignment();}
	void CipherSetKey(const NameValuePairs &params, const byte *key, unsigned int length);
};

template <class POLICY_INTERFACE>
void ModePolicyCommonTemplate<POLICY_INTERFACE>::CipherSetKey(const NameValuePairs &params, const byte *key, unsigned int length)
{
	m_cipher->SetKey(key, length, params);
	ResizeBuffers();
	int feedbackSize = params.GetIntValueWithDefault(Name::FeedbackSize(), 0);
	SetFeedbackSize(feedbackSize);
}

class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE CFB_ModePolicy : public ModePolicyCommonTemplate<CFB_CipherAbstractPolicy>
{
public:
	IV_Requirement IVRequirement() const {return RANDOM_IV;}
	static const char *StaticAlgorithmName() {return "CFB";}

protected:
	unsigned int GetBytesPerIteration() const {return m_feedbackSize;}
	byte * GetRegisterBegin() {return m_register + BlockSize() - m_feedbackSize;}
	void TransformRegister()
	{
		m_cipher->ProcessBlock(m_register, m_temp);
		memmove(m_register, m_register+m_feedbackSize, BlockSize()-m_feedbackSize);
		memcpy(m_register+BlockSize()-m_feedbackSize, m_temp, m_feedbackSize);
	}
	void CipherResynchronize(const byte *iv)
	{
		memcpy(m_register, iv, BlockSize());
		TransformRegister();
	}
	void SetFeedbackSize(unsigned int feedbackSize)
	{
		if (feedbackSize > BlockSize())
			throw InvalidArgument("CFB_Mode: invalid feedback size");
		m_feedbackSize = feedbackSize ? feedbackSize : BlockSize();
	}
	void ResizeBuffers()
	{
		CipherModeBase::ResizeBuffers();
		m_temp.New(BlockSize());
	}

	SecByteBlock m_temp;
	unsigned int m_feedbackSize;
};

inline void CopyOrZero(void *dest, const void *src, size_t s)
{
	if (src)
		memcpy(dest, src, s);
	else
		memset(dest, 0, s);
}

class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE OFB_ModePolicy : public ModePolicyCommonTemplate<AdditiveCipherAbstractPolicy>
{
public:
	bool IsRandomAccess() const {return false;}
	IV_Requirement IVRequirement() const {return STRUCTURED_IV;}
	static const char *StaticAlgorithmName() {return "OFB";}

private:
	unsigned int GetBytesPerIteration() const {return BlockSize();}
	unsigned int GetIterationsToBuffer() const {return 1;}
	void WriteKeystream(byte *keystreamBuffer, unsigned int iterationCount)
	{
		assert(iterationCount == 1);
		m_cipher->ProcessBlock(keystreamBuffer);
		memcpy(m_register, keystreamBuffer, BlockSize());
	}
	void CipherResynchronize(byte *keystreamBuffer, const byte *iv)
	{
		CopyOrZero(keystreamBuffer, iv, BlockSize());
	}
};

class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE CTR_ModePolicy : public ModePolicyCommonTemplate<AdditiveCipherAbstractPolicy>
{
public:
	bool IsRandomAccess() const {return true;}
	IV_Requirement IVRequirement() const {return STRUCTURED_IV;}
	void GetNextIV(byte *IV);
	static const char *StaticAlgorithmName() {return "Counter-BE";}

private:
	unsigned int GetBytesPerIteration() const {return BlockSize();}
	unsigned int GetIterationsToBuffer() const {return m_cipher->OptimalNumberOfParallelBlocks();}
	void WriteKeystream(byte *buffer, unsigned int iterationCount)
		{OperateKeystream(WRITE_KEYSTREAM, buffer, NULL, iterationCount);}
	bool CanOperateKeystream() const {return true;}
	void OperateKeystream(KeystreamOperation operation, byte *output, const byte *input, unsigned int iterationCount);
	void CipherResynchronize(byte *keystreamBuffer, const byte *iv);
	void SeekToIteration(lword iterationCount);

	inline void ProcessMultipleBlocks(byte *output, const byte *input, unsigned int n);

	SecByteBlock m_counterArray;
};

class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE BlockOrientedCipherModeBase : public CipherModeBase
{
public:
	void UncheckedSetKey(const NameValuePairs &params, const byte *key, unsigned int length, const byte *iv);
	unsigned int MandatoryBlockSize() const {return BlockSize();}
	bool IsRandomAccess() const {return false;}
	bool IsSelfInverting() const {return false;}
	bool IsForwardTransformation() const {return m_cipher->IsForwardTransformation();}
	void Resynchronize(const byte *iv) {memcpy(m_register, iv, BlockSize());}
	void ProcessData(byte *outString, const byte *inString, unsigned int length);

protected:
	bool RequireAlignedInput() const {return true;}
	virtual void ProcessBlocks(byte *outString, const byte *inString, unsigned int numberOfBlocks) =0;
	void ResizeBuffers()
	{
		CipherModeBase::ResizeBuffers();
		m_buffer.New(BlockSize());
	}

	SecByteBlock m_buffer;
};

class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE ECB_OneWay : public BlockOrientedCipherModeBase
{
public:
	IV_Requirement IVRequirement() const {return NOT_RESYNCHRONIZABLE;}
	unsigned int OptimalBlockSize() const {return BlockSize() * m_cipher->OptimalNumberOfParallelBlocks();}
	void ProcessBlocks(byte *outString, const byte *inString, unsigned int numberOfBlocks)
		{m_cipher->ProcessAndXorMultipleBlocks(inString, NULL, outString, numberOfBlocks);}
	static const char *StaticAlgorithmName() {return "ECB";}
};

class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE CBC_ModeBase : public BlockOrientedCipherModeBase
{
public:
	IV_Requirement IVRequirement() const {return UNPREDICTABLE_RANDOM_IV;}
	bool RequireAlignedInput() const {return false;}
	unsigned int MinLastBlockSize() const {return 0;}
	static const char *StaticAlgorithmName() {return "CBC";}
};

class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE CBC_Encryption : public CBC_ModeBase
{
public:
	void ProcessBlocks(byte *outString, const byte *inString, unsigned int numberOfBlocks);
};

class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE CBC_CTS_Encryption : public CBC_Encryption
{
public:
	void SetStolenIV(byte *iv) {m_stolenIV = iv;}
	unsigned int MinLastBlockSize() const {return BlockSize()+1;}
	void ProcessLastBlock(byte *outString, const byte *inString, unsigned int length);
	static const char *StaticAlgorithmName() {return "CBC/CTS";}

protected:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人一二三区| 中文字幕日韩一区| 91在线视频观看| 亚洲va欧美va人人爽| 久久九九99视频| 欧美日本一区二区在线观看| 国产99精品在线观看| 日韩电影在线观看网站| 亚洲国产精品成人综合色在线婷婷| 欧美日韩中字一区| 成人av影视在线观看| 久久99精品国产麻豆婷婷| 夜夜爽夜夜爽精品视频| 国产嫩草影院久久久久| 日韩欧美国产综合在线一区二区三区| 91丨九色porny丨蝌蚪| 国产精品主播直播| 蜜桃久久久久久久| 亚洲国产精品精华液网站| 国产精品久久久久久亚洲毛片| 日韩精品一区二区三区在线播放| 91福利国产精品| av亚洲精华国产精华精华| 韩国成人精品a∨在线观看| 五月天视频一区| 一区二区三区四区不卡在线| 久久亚洲二区三区| 欧美mv日韩mv国产| 91精品国产一区二区三区香蕉| 91九色最新地址| 91丨九色丨蝌蚪富婆spa| 成人毛片视频在线观看| 国产成人自拍在线| 韩日精品视频一区| 精品一区二区三区视频在线观看| 日韩综合一区二区| 视频一区二区中文字幕| 亚洲成av人片在线观看| 一区二区三区在线观看国产| 中文字幕一区不卡| 综合色中文字幕| 中文字幕在线播放不卡一区| 国产精品高潮呻吟| 中文字幕一区二区三区色视频| 国产精品萝li| 日韩一区有码在线| 亚洲精品高清在线| 亚洲国产一区二区a毛片| 亚洲一区二区黄色| 亚洲国产精品久久艾草纯爱| 日韩精品一级中文字幕精品视频免费观看 | 欧美午夜不卡在线观看免费| 91精彩视频在线| 欧美视频你懂的| 欧美日韩黄色一区二区| 91精品国产黑色紧身裤美女| 91精品国产全国免费观看 | 欧美精品一区二区三区视频| 精品国精品自拍自在线| 久久久国产午夜精品| 国产精品欧美一区喷水| 综合中文字幕亚洲| 天天av天天翘天天综合网| 青青草国产精品亚洲专区无| 紧缚奴在线一区二区三区| 国产91清纯白嫩初高中在线观看| 成人免费三级在线| 在线亚洲精品福利网址导航| 欧美精品xxxxbbbb| 337p粉嫩大胆色噜噜噜噜亚洲| 中文字幕欧美三区| 一区二区免费视频| 免费观看一级特黄欧美大片| 国产精品主播直播| 色婷婷久久综合| 欧美一区二区三区四区五区 | 亚洲激情综合网| 石原莉奈一区二区三区在线观看 | 在线免费观看日韩欧美| 91精品国产高清一区二区三区蜜臀| 精品福利在线导航| 亚洲三级理论片| 美女尤物国产一区| av电影在线观看不卡| 制服丝袜av成人在线看| 国产日产精品1区| 亚洲国产视频网站| 国产一区在线精品| 91激情五月电影| 久久综合色鬼综合色| 亚洲精品一二三区| 国模一区二区三区白浆| 日本精品一区二区三区高清| 精品少妇一区二区| 一个色妞综合视频在线观看| 国产传媒久久文化传媒| 欧美日韩激情一区二区三区| 国产精品理论在线观看| 日韩av不卡在线观看| 99久久久国产精品| 久久色在线观看| 亚洲一区二区三区小说| 国产精品综合二区| 制服丝袜av成人在线看| 亚洲精品五月天| 国产999精品久久久久久| 8x福利精品第一导航| 亚洲三级在线免费观看| 国产高清一区日本| 日韩三级伦理片妻子的秘密按摩| 亚洲免费观看在线视频| 国产经典欧美精品| 日韩午夜激情电影| 午夜免费久久看| 一本大道久久a久久精品综合| 久久精品一区二区三区av| 欧美aaa在线| 欧美三区在线观看| 樱花草国产18久久久久| 成人高清视频免费观看| 久久久久免费观看| 美女任你摸久久| 欧美美女一区二区在线观看| 亚洲日本青草视频在线怡红院 | 国产精品久久久久永久免费观看| 美国十次综合导航| 91精品国产综合久久福利| 亚洲一区二区三区四区中文字幕 | 欧美女孩性生活视频| 亚洲女女做受ⅹxx高潮| 99视频热这里只有精品免费| 日韩黄色免费电影| 欧美高清视频不卡网| 亚洲一区二区三区美女| 欧美又粗又大又爽| 亚洲影视资源网| 91黄色激情网站| 亚洲乱码国产乱码精品精的特点| 99国产精品99久久久久久| 国产精品嫩草影院av蜜臀| 国产.精品.日韩.另类.中文.在线.播放| 精品乱人伦一区二区三区| 久久国产人妖系列| 精品国产伦一区二区三区免费| 老司机精品视频一区二区三区| 欧美日韩国产不卡| 青青草原综合久久大伊人精品优势| 欧美日韩aaa| 美女www一区二区| 久久天天做天天爱综合色| 国产风韵犹存在线视精品| 久久久91精品国产一区二区三区| 国产精品99久久久久久久vr| 国产三区在线成人av| 成人黄色网址在线观看| 亚洲色图视频网站| 欧美写真视频网站| 日本欧美一区二区在线观看| 日韩欧美黄色影院| 国产精品2024| 最新日韩在线视频| 欧美年轻男男videosbes| 韩国av一区二区三区| 中文无字幕一区二区三区| 99久久免费视频.com| 亚洲综合一二三区| 欧美一区二区三区人| 国产福利精品一区二区| 亚洲欧洲综合另类| 制服丝袜亚洲色图| 成熟亚洲日本毛茸茸凸凹| 亚洲女同女同女同女同女同69| 欧美日韩美女一区二区| 狠狠色狠狠色合久久伊人| 中文字幕第一区综合| 欧美无砖专区一中文字| 精品一区二区三区欧美| 国产精品视频线看| 欧美精品久久天天躁| 国产精品18久久久久久久久| 亚洲综合色在线| 日韩精品一区二区三区三区免费| 福利视频网站一区二区三区| 亚洲自拍偷拍av| 国产日产亚洲精品系列| 欧美日韩黄视频| 国产成人8x视频一区二区| 亚洲观看高清完整版在线观看| 日韩欧美激情四射| 色狠狠桃花综合| 国产在线国偷精品免费看| 一区二区三区成人在线视频 | 一区二区三区中文字幕电影 | 国产乱对白刺激视频不卡| 亚洲激情校园春色| 精品第一国产综合精品aⅴ| 色婷婷综合久久久久中文| 狠狠网亚洲精品| 香港成人在线视频| 最新国产の精品合集bt伙计|