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

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

?? strciphr.h

?? 常用字符串hash算法
?? H
字號:
/*! \file 	This file contains helper classes for implementing stream ciphers.	All this infrastructure may look very complex compared to what's in Crypto++ 4.x,	but stream ciphers implementations now support a lot of new functionality,	including better performance (minimizing copying), resetting of keys and IVs, and methods to	query which features are supported by a cipher.	Here's an explanation of these classes. The word "policy" is used here to mean a class with a	set of methods that must be implemented by individual stream cipher implementations.	This is usually much simpler than the full stream cipher API, which is implemented by	either AdditiveCipherTemplate or CFB_CipherTemplate using the policy. So for example, an	implementation of SEAL only needs to implement the AdditiveCipherAbstractPolicy interface	(since it's an additive cipher, i.e., it xors a keystream into the plaintext).	See this line in seal.h:	typedef SymmetricCipherFinalTemplate<ConcretePolicyHolder<SEAL_Policy<B>, AdditiveCipherTemplate<> > > Encryption;	AdditiveCipherTemplate and CFB_CipherTemplate are designed so that they don't need	to take a policy class as a template parameter (although this is allowed), so that	their code is not duplicated for each new cipher. Instead they each	get a reference to an abstract policy interface by calling AccessPolicy() on itself, so	AccessPolicy() must be overriden to return the actual policy reference. This is done	by the ConceretePolicyHolder class. Finally, SymmetricCipherFinalTemplate implements the constructors and	other functions that must be implemented by the most derived class.*/#ifndef CRYPTOPP_STRCIPHR_H#define CRYPTOPP_STRCIPHR_H#include "seckey.h"#include "secblock.h"NAMESPACE_BEGIN(CryptoPP)template <class POLICY_INTERFACE, class BASE = Empty>class AbstractPolicyHolder : public BASE{public:	typedef POLICY_INTERFACE PolicyInterface;protected:	virtual const POLICY_INTERFACE & GetPolicy() const =0;	virtual POLICY_INTERFACE & AccessPolicy() =0;};template <class POLICY, class BASE, class POLICY_INTERFACE = CPP_TYPENAME BASE::PolicyInterface>class ConcretePolicyHolder : public BASE, protected POLICY{protected:	const POLICY_INTERFACE & GetPolicy() const {return *this;}	POLICY_INTERFACE & AccessPolicy() {return *this;}};enum KeystreamOperation {WRITE_KEYSTREAM, XOR_KEYSTREAM, XOR_KEYSTREAM_INPLACE};struct AdditiveCipherAbstractPolicy{	virtual unsigned int GetAlignment() const =0;	virtual unsigned int GetBytesPerIteration() const =0;	virtual unsigned int GetIterationsToBuffer() const =0;	virtual void WriteKeystream(byte *keystreamBuffer, unsigned int iterationCount) =0;	virtual bool CanOperateKeystream() const {return false;}	virtual void OperateKeystream(KeystreamOperation operation, byte *output, const byte *input, unsigned int iterationCount) {assert(false);}	virtual void CipherSetKey(const NameValuePairs &params, const byte *key, unsigned int length) =0;	virtual void CipherResynchronize(byte *keystreamBuffer, const byte *iv) {throw NotImplemented("StreamTransformation: this object doesn't support resynchronization");}	virtual bool IsRandomAccess() const =0;	virtual void SeekToIteration(dword iterationCount) {assert(!IsRandomAccess()); throw NotImplemented("StreamTransformation: this object doesn't support random access");}};template <typename WT, unsigned int W, unsigned int X = 1, class BASE = AdditiveCipherAbstractPolicy>struct AdditiveCipherConcretePolicy : public BASE{	typedef WT WordType;	unsigned int GetAlignment() const {return sizeof(WordType);}	unsigned int GetBytesPerIteration() const {return sizeof(WordType) * W;}	unsigned int GetIterationsToBuffer() const {return X;}	void WriteKeystream(byte *buffer, unsigned int iterationCount)		{OperateKeystream(WRITE_KEYSTREAM, buffer, NULL, iterationCount);}	bool CanOperateKeystream() const {return true;}	virtual void OperateKeystream(KeystreamOperation operation, byte *output, const byte *input, unsigned int iterationCount) =0;	template <class B>	struct KeystreamOutput	{		KeystreamOutput(KeystreamOperation operation, byte *output, const byte *input)			: m_operation(operation), m_output(output), m_input(input) {}		inline KeystreamOutput & operator()(WordType keystreamWord)		{			assert(IsAligned<WordType>(m_input));			assert(IsAligned<WordType>(m_output));			if (!NativeByteOrderIs(B::ToEnum()))				keystreamWord = ByteReverse(keystreamWord);			if (m_operation == WRITE_KEYSTREAM)				*(WordType*)m_output = keystreamWord;			else if (m_operation == XOR_KEYSTREAM)			{				*(WordType*)m_output = keystreamWord ^ *(WordType*)m_input;				m_input += sizeof(WordType);			}			else if (m_operation == XOR_KEYSTREAM_INPLACE)				*(WordType*)m_output ^= keystreamWord;			m_output += sizeof(WordType);			return *this;		}		KeystreamOperation m_operation;		byte *m_output;		const byte *m_input;	};};template <class BASE = AbstractPolicyHolder<AdditiveCipherAbstractPolicy, TwoBases<SymmetricCipher, RandomNumberGenerator> > >class AdditiveCipherTemplate : public BASE{public:    byte GenerateByte();    void ProcessData(byte *outString, const byte *inString, unsigned int length);	void Resynchronize(const byte *iv);	unsigned int OptimalBlockSize() const {return GetPolicy().GetBytesPerIteration();}	unsigned int GetOptimalNextBlockSize() const {return m_leftOver;}	unsigned int OptimalDataAlignment() const {return GetPolicy().GetAlignment();}	bool IsSelfInverting() const {return true;}	bool IsForwardTransformation() const {return true;}	bool IsRandomAccess() const {return GetPolicy().IsRandomAccess();}	void Seek(dword position);	typedef typename BASE::PolicyInterface PolicyInterface;protected:	void UncheckedSetKey(const NameValuePairs &params, const byte *key, unsigned int length);	unsigned int GetBufferByteSize(const PolicyInterface &policy) const {return policy.GetBytesPerIteration() * policy.GetIterationsToBuffer();}	inline byte * KeystreamBufferBegin() {return m_buffer.data();}	inline byte * KeystreamBufferEnd() {return (m_buffer.data() + m_buffer.size());}	SecByteBlock m_buffer;	unsigned int m_leftOver;};struct CFB_CipherAbstractPolicy{	virtual unsigned int GetAlignment() const =0;	virtual unsigned int GetBytesPerIteration() const =0;	virtual byte * GetRegisterBegin() =0;	virtual void TransformRegister() =0;	virtual bool CanIterate() const {return false;}	virtual void Iterate(byte *output, const byte *input, CipherDir dir, unsigned int iterationCount) {assert(false);}	virtual void CipherSetKey(const NameValuePairs &params, const byte *key, unsigned int length) =0;	virtual void CipherResynchronize(const byte *iv) {throw NotImplemented("StreamTransformation: this object doesn't support resynchronization");}};template <typename WT, unsigned int W, class BASE = CFB_CipherAbstractPolicy>struct CFB_CipherConcretePolicy : public BASE{	typedef WT WordType;	unsigned int GetAlignment() const {return sizeof(WordType);}	unsigned int GetBytesPerIteration() const {return sizeof(WordType) * W;}	bool CanIterate() const {return true;}	void TransformRegister() {Iterate(NULL, NULL, ENCRYPTION, 1);}	template <class B>	struct RegisterOutput	{		RegisterOutput(byte *output, const byte *input, CipherDir dir)			: m_output(output), m_input(input), m_dir(dir) {}		inline RegisterOutput& operator()(WordType &registerWord)		{			assert(IsAligned<WordType>(m_output));			assert(IsAligned<WordType>(m_input));			if (!NativeByteOrderIs(B::ToEnum()))				registerWord = ByteReverse(registerWord);			if (m_dir == ENCRYPTION)			{				WordType ct = *(const WordType *)m_input ^ registerWord;				registerWord = ct;				*(WordType*)m_output = ct;				m_input += sizeof(WordType);				m_output += sizeof(WordType);			}			else			{				WordType ct = *(const WordType *)m_input;				*(WordType*)m_output = registerWord ^ ct;				registerWord = ct;				m_input += sizeof(WordType);				m_output += sizeof(WordType);			}			// registerWord is left unreversed so it can be xor-ed with further input			return *this;		}		byte *m_output;		const byte *m_input;		CipherDir m_dir;	};};template <class BASE>class CFB_CipherTemplate : public BASE{public:	void ProcessData(byte *outString, const byte *inString, unsigned int length);	void Resynchronize(const byte *iv);	unsigned int OptimalBlockSize() const {return GetPolicy().GetBytesPerIteration();}	unsigned int GetOptimalNextBlockSize() const {return m_leftOver;}	unsigned int OptimalDataAlignment() const {return GetPolicy().GetAlignment();}	bool IsRandomAccess() const {return false;}	bool IsSelfInverting() const {return false;}	typedef typename BASE::PolicyInterface PolicyInterface;protected:	virtual void CombineMessageAndShiftRegister(byte *output, byte *reg, const byte *message, unsigned int length) =0;	void UncheckedSetKey(const NameValuePairs &params, const byte *key, unsigned int length);	unsigned int m_leftOver;};template <class BASE = AbstractPolicyHolder<CFB_CipherAbstractPolicy, SymmetricCipher> >class CFB_EncryptionTemplate : public CFB_CipherTemplate<BASE>{	bool IsForwardTransformation() const {return true;}	void CombineMessageAndShiftRegister(byte *output, byte *reg, const byte *message, unsigned int length);};template <class BASE = AbstractPolicyHolder<CFB_CipherAbstractPolicy, SymmetricCipher> >class CFB_DecryptionTemplate : public CFB_CipherTemplate<BASE>{	bool IsForwardTransformation() const {return false;}	void CombineMessageAndShiftRegister(byte *output, byte *reg, const byte *message, unsigned int length);};template <class BASE, class INFO = BASE>class SymmetricCipherFinalTemplate : public AlgorithmImpl<SimpleKeyingInterfaceImpl<BASE, INFO>, INFO>{public: 	SymmetricCipherFinalTemplate() {}	SymmetricCipherFinalTemplate(const byte *key)		{SetKey(key, DEFAULT_KEYLENGTH);}	SymmetricCipherFinalTemplate(const byte *key, unsigned int length)		{SetKey(key, length);}	SymmetricCipherFinalTemplate(const byte *key, unsigned int length, const byte *iv)		{SetKey(key, length); Resynchronize(iv);}	void SetKey(const byte *key, unsigned int length, const NameValuePairs &params = g_nullNameValuePairs)	{		ThrowIfInvalidKeyLength(length);		UncheckedSetKey(params, key, length);	}	Clonable * Clone() const {return static_cast<SymmetricCipher *>(new SymmetricCipherFinalTemplate<BASE, INFO>(*this));}};template <class S>void AdditiveCipherTemplate<S>::UncheckedSetKey(const NameValuePairs &params, const byte *key, unsigned int length){	PolicyInterface &policy = AccessPolicy();	policy.CipherSetKey(params, key, length);	m_buffer.New(GetBufferByteSize(policy));	m_leftOver = 0;}template <class BASE>void CFB_CipherTemplate<BASE>::UncheckedSetKey(const NameValuePairs &params, const byte *key, unsigned int length){	PolicyInterface &policy = AccessPolicy();	policy.CipherSetKey(params, key, length);	m_leftOver = policy.GetBytesPerIteration();}NAMESPACE_END#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
高潮精品一区videoshd| 一区二区三区 在线观看视频| 日精品一区二区| 欧美日本高清视频在线观看| 亚洲国产成人av| 欧美一级艳片视频免费观看| 久久精品久久久精品美女| 日韩免费成人网| 国产精品羞羞答答xxdd| 国产精品久久夜| 在线精品视频一区二区三四| 亚洲综合色成人| 欧美一级在线观看| 国产精品资源站在线| 中文字幕在线一区免费| 日本丶国产丶欧美色综合| 天堂va蜜桃一区二区三区 | 欧美日韩大陆在线| 丝袜美腿亚洲综合| 久久久一区二区三区捆绑**| 成人av动漫网站| 日韩av一二三| 国产欧美一区二区精品性| 91网站最新地址| 日韩精品一级二级| 国产精品三级av| 欧美人妇做爰xxxⅹ性高电影| 欧美精品一二三区| 国精品**一区二区三区在线蜜桃| 中文字幕成人在线观看| 欧美日韩一区精品| 国产精品一区二区黑丝| 夜色激情一区二区| 久久精品夜色噜噜亚洲a∨| 在线观看国产精品网站| 国产麻豆精品视频| 亚洲综合色成人| 欧美经典三级视频一区二区三区| 精品视频全国免费看| 成人听书哪个软件好| 蜜桃久久久久久久| 一区二区三区欧美日韩| 国产亚洲欧美在线| 日韩一区二区精品在线观看| av中文字幕在线不卡| 理论电影国产精品| 午夜不卡av免费| 综合激情网...| 精品久久久久久久久久久久久久久 | 日本sm残虐另类| 亚洲人成小说网站色在线| 久久久综合视频| 日韩欧美二区三区| 欧美调教femdomvk| 91免费看视频| 成人开心网精品视频| 国内不卡的二区三区中文字幕 | 欧美色电影在线| 波多野结衣中文字幕一区| 美女视频黄免费的久久 | 午夜av一区二区三区| 国产精品国产三级国产普通话蜜臀 | 日本亚洲电影天堂| 亚洲最大色网站| 亚洲日本丝袜连裤袜办公室| 久久精品一区蜜桃臀影院| 日韩欧美国产精品| 国产精品久久久99| 国产欧美日韩综合精品一区二区| 日韩欧美自拍偷拍| 日韩欧美中文字幕公布| 91精品视频网| 欧美一区二区三区四区高清| 欧美日韩精品一区视频| 欧美精品久久久久久久久老牛影院| 欧美中文字幕久久| 欧美三级电影在线看| 色成人在线视频| 欧洲av一区二区嗯嗯嗯啊| 91农村精品一区二区在线| 91免费视频观看| 在线视频国内自拍亚洲视频| 91福利国产精品| 欧美男人的天堂一二区| 91麻豆精品91久久久久同性| 欧美一区二区三区在线看| 日韩欧美高清dvd碟片| 精品国免费一区二区三区| 26uuu亚洲| 国产精品视频一二三| 亚洲图片另类小说| 亚洲bt欧美bt精品777| 免费成人美女在线观看.| 韩国v欧美v亚洲v日本v| 国产成人午夜精品影院观看视频| 高清国产一区二区| 色婷婷久久久综合中文字幕| 欧美视频一区二区在线观看| 91精品欧美福利在线观看| 亚洲精品一区二区三区蜜桃下载 | 欧美日韩精品一区二区| 日韩欧美视频一区| 国产亚洲一区二区三区在线观看| 国产精品嫩草影院av蜜臀| 亚洲午夜成aⅴ人片| 青青草国产成人av片免费| 日韩美女在线视频| 国产欧美一区在线| 亚洲精品成人天堂一二三| 免费成人在线观看| 成人精品免费网站| 欧美日韩成人一区二区| 久久久久久亚洲综合影院红桃 | 色婷婷综合久久久久中文一区二区| 欧美日韩在线免费视频| 久久综合给合久久狠狠狠97色69| 一色桃子久久精品亚洲| 日韩激情中文字幕| 成人在线综合网站| 欧美美女bb生活片| 国产精品婷婷午夜在线观看| 偷拍自拍另类欧美| 成人精品视频.| 欧美一区二区三区性视频| 国产精品久久久99| 另类中文字幕网| 色av一区二区| 久久久精品免费免费| 婷婷成人激情在线网| 成人在线一区二区三区| 日韩午夜中文字幕| 亚洲免费在线看| 精品一区中文字幕| 欧美日韩综合在线| 亚洲欧洲成人精品av97| 精品一区二区在线视频| 欧美日韩小视频| 国产精品久久久99| 国产成人免费高清| 欧美一区二区女人| 一区二区三区四区在线免费观看| 国产一区二三区| 欧美一区二区不卡视频| 亚洲一二三级电影| 91欧美一区二区| 日本一区二区三区dvd视频在线| 午夜电影网一区| 欧美在线视频你懂得| 亚洲欧美日韩在线播放| 成人免费视频caoporn| 精品久久久久久久久久久久久久久久久 | 久久亚洲精精品中文字幕早川悠里 | 欧美人妖巨大在线| 一区二区免费看| 成人a级免费电影| 欧美国产精品劲爆| 国产一区在线视频| 亚洲精品在线网站| 精品一区二区三区久久| 欧美一区二区日韩| 日本不卡中文字幕| 日韩一级二级三级| 蜜桃视频一区二区三区| 欧美一区二区成人| 看片的网站亚洲| 欧美大片在线观看一区| 青青草97国产精品免费观看| 欧美精品在线一区二区| 日本欧美一区二区| 91精品国模一区二区三区| 奇米精品一区二区三区在线观看 | 亚洲欧美一区二区不卡| 欧美精品一区视频| 国产精品资源网| 国产亚洲成av人在线观看导航| 国产一区二区在线免费观看| 久久久久久久久久久久久夜| 国产成人亚洲综合a∨猫咪| 久久精品人人做人人爽97| 国产sm精品调教视频网站| 成人免费小视频| 欧美综合天天夜夜久久| 视频在线观看一区二区三区| 日韩欧美一区中文| 国产成人午夜片在线观看高清观看| 国产精品视频麻豆| 欧美性生活久久| 美女尤物国产一区| 国产欧美中文在线| 欧洲av在线精品| 麻豆国产欧美日韩综合精品二区| 精品盗摄一区二区三区| 不卡视频免费播放| 亚洲午夜在线视频| 精品美女在线播放| 波多野结衣中文字幕一区二区三区| 一区二区三区在线观看视频| 91麻豆精品久久久久蜜臀 | 国产精品美女久久久久高潮| 色女孩综合影院|