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

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

?? filters.h

?? 利用VC編寫的加解密算法程序,包括DES、RSA等多個算法
?? H
?? 第 1 頁 / 共 3 頁
字號:
	SimpleProxyFilter(BufferedTransformation *filter, BufferedTransformation *attachment)
		: ProxyFilter(filter, 0, 0, attachment) {}

	void FirstPut(const byte *) {}
	void LastPut(const byte *, size_t) {m_filter->MessageEnd();}
};

//! proxy for the filter created by PK_Encryptor::CreateEncryptionFilter
/*! This class is here just to provide symmetry with VerifierFilter. */
class CRYPTOPP_DLL PK_EncryptorFilter : public SimpleProxyFilter
{
public:
	PK_EncryptorFilter(RandomNumberGenerator &rng, const PK_Encryptor &encryptor, BufferedTransformation *attachment = NULL)
		: SimpleProxyFilter(encryptor.CreateEncryptionFilter(rng), attachment) {}
};

//! proxy for the filter created by PK_Decryptor::CreateDecryptionFilter
/*! This class is here just to provide symmetry with SignerFilter. */
class CRYPTOPP_DLL PK_DecryptorFilter : public SimpleProxyFilter
{
public:
	PK_DecryptorFilter(RandomNumberGenerator &rng, const PK_Decryptor &decryptor, BufferedTransformation *attachment = NULL)
		: SimpleProxyFilter(decryptor.CreateDecryptionFilter(rng), attachment) {}
};

//! Append input to a string object
template <class T>
class StringSinkTemplate : public Bufferless<Sink>
{
public:
	// VC60 workaround: no T::char_type
	typedef typename T::traits_type::char_type char_type;

	StringSinkTemplate(T &output)
		: m_output(&output) {assert(sizeof(output[0])==1);}

	void IsolatedInitialize(const NameValuePairs &parameters)
		{if (!parameters.GetValue("OutputStringPointer", m_output)) throw InvalidArgument("StringSink: OutputStringPointer not specified");}

	size_t Put2(const byte *begin, size_t length, int messageEnd, bool blocking)
	{
		if (length > 0)
		{
			typename T::size_type size = m_output->size();
			if (length < size && size + length > m_output->capacity())
				m_output->reserve(2*size);
		m_output->append((const char_type *)begin, (const char_type *)begin+length);
		}
		return 0;
	}

private:	
	T *m_output;
};

//! Append input to an std::string
CRYPTOPP_DLL_TEMPLATE_CLASS StringSinkTemplate<std::string>;
typedef StringSinkTemplate<std::string> StringSink;

//! incorporates input into RNG as additional entropy
class RandomNumberSink : public Bufferless<Sink>
{
public:
	RandomNumberSink()
		: m_rng(NULL) {}

	RandomNumberSink(RandomNumberGenerator &rng)
		: m_rng(&rng) {}

	void IsolatedInitialize(const NameValuePairs &parameters);
	size_t Put2(const byte *begin, size_t length, int messageEnd, bool blocking);

private:
	RandomNumberGenerator *m_rng;
};

//! Copy input to a memory buffer
class CRYPTOPP_DLL ArraySink : public Bufferless<Sink>
{
public:
	ArraySink(const NameValuePairs &parameters = g_nullNameValuePairs) {IsolatedInitialize(parameters);}
	ArraySink(byte *buf, size_t size) : m_buf(buf), m_size(size), m_total(0) {}

	size_t AvailableSize() {return SaturatingSubtract(m_size, m_total);}
	lword TotalPutLength() {return m_total;}

	void IsolatedInitialize(const NameValuePairs &parameters);
	byte * CreatePutSpace(size_t &size);
	size_t Put2(const byte *begin, size_t length, int messageEnd, bool blocking);

protected:
	byte *m_buf;
	size_t m_size;
	lword m_total;
};

//! Xor input to a memory buffer
class CRYPTOPP_DLL ArrayXorSink : public ArraySink
{
public:
	ArrayXorSink(byte *buf, size_t size)
		: ArraySink(buf, size) {}

	size_t Put2(const byte *begin, size_t length, int messageEnd, bool blocking);
	byte * CreatePutSpace(size_t &size) {return BufferedTransformation::CreatePutSpace(size);}
};

//! string-based implementation of Store interface
class StringStore : public Store
{
public:
	StringStore(const char *string = NULL)
		{StoreInitialize(MakeParameters("InputBuffer", ConstByteArrayParameter(string)));}
	StringStore(const byte *string, size_t length)
		{StoreInitialize(MakeParameters("InputBuffer", ConstByteArrayParameter(string, length)));}
	template <class T> StringStore(const T &string)
		{StoreInitialize(MakeParameters("InputBuffer", ConstByteArrayParameter(string)));}

	CRYPTOPP_DLL size_t TransferTo2(BufferedTransformation &target, lword &transferBytes, const std::string &channel=NULL_CHANNEL, bool blocking=true);
	CRYPTOPP_DLL size_t CopyRangeTo2(BufferedTransformation &target, lword &begin, lword end=LWORD_MAX, const std::string &channel=NULL_CHANNEL, bool blocking=true) const;

private:
	CRYPTOPP_DLL void StoreInitialize(const NameValuePairs &parameters);

	const byte *m_store;
	size_t m_length, m_count;
};

//! RNG-based implementation of Source interface
class CRYPTOPP_DLL RandomNumberStore : public Store
{
public:
	RandomNumberStore()
		: m_rng(NULL), m_length(0), m_count(0) {}

	RandomNumberStore(RandomNumberGenerator &rng, lword length)
		: m_rng(&rng), m_length(length), m_count(0) {}

	bool AnyRetrievable() const {return MaxRetrievable() != 0;}
	lword MaxRetrievable() const {return m_length-m_count;}

	size_t TransferTo2(BufferedTransformation &target, lword &transferBytes, const std::string &channel=NULL_CHANNEL, bool blocking=true);
	size_t CopyRangeTo2(BufferedTransformation &target, lword &begin, lword end=LWORD_MAX, const std::string &channel=NULL_CHANNEL, bool blocking=true) const
	{
		throw NotImplemented("RandomNumberStore: CopyRangeTo2() is not supported by this store");
	}

private:
	void StoreInitialize(const NameValuePairs &parameters);

	RandomNumberGenerator *m_rng;
	lword m_length, m_count;
};

//! empty store
class CRYPTOPP_DLL NullStore : public Store
{
public:
	NullStore(lword size = ULONG_MAX) : m_size(size) {}
	void StoreInitialize(const NameValuePairs &parameters) {}
	lword MaxRetrievable() const {return m_size;}
	size_t TransferTo2(BufferedTransformation &target, lword &transferBytes, const std::string &channel=NULL_CHANNEL, bool blocking=true);
	size_t CopyRangeTo2(BufferedTransformation &target, lword &begin, lword end=LWORD_MAX, const std::string &channel=NULL_CHANNEL, bool blocking=true) const;

private:
	lword m_size;
};

//! A Filter that pumps data into its attachment as input
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE Source : public InputRejecting<Filter>
{
public:
	Source(BufferedTransformation *attachment = NULL)
		{Source::Detach(attachment);}

	lword Pump(lword pumpMax=size_t(0)-1)
		{Pump2(pumpMax); return pumpMax;}
	unsigned int PumpMessages(unsigned int count=UINT_MAX)
		{PumpMessages2(count); return count;}
	void PumpAll()
		{PumpAll2();}
	virtual size_t Pump2(lword &byteCount, bool blocking=true) =0;
	virtual size_t PumpMessages2(unsigned int &messageCount, bool blocking=true) =0;
	virtual size_t PumpAll2(bool blocking=true);
	virtual bool SourceExhausted() const =0;

protected:
	void SourceInitialize(bool pumpAll, const NameValuePairs &parameters)
	{
		IsolatedInitialize(parameters);
		if (pumpAll)
			PumpAll();
	}
};

//! Turn a Store into a Source
template <class T>
class SourceTemplate : public Source
{
public:
	SourceTemplate<T>(BufferedTransformation *attachment)
		: Source(attachment) {}
	void IsolatedInitialize(const NameValuePairs &parameters)
		{m_store.IsolatedInitialize(parameters);}
	size_t Pump2(lword &byteCount, bool blocking=true)
		{return m_store.TransferTo2(*AttachedTransformation(), byteCount, NULL_CHANNEL, blocking);}
	size_t PumpMessages2(unsigned int &messageCount, bool blocking=true)
		{return m_store.TransferMessagesTo2(*AttachedTransformation(), messageCount, NULL_CHANNEL, blocking);}
	size_t PumpAll2(bool blocking=true)
		{return m_store.TransferAllTo2(*AttachedTransformation(), NULL_CHANNEL, blocking);}
	bool SourceExhausted() const
		{return !m_store.AnyRetrievable() && !m_store.AnyMessages();}
	void SetAutoSignalPropagation(int propagation)
		{m_store.SetAutoSignalPropagation(propagation);}
	int GetAutoSignalPropagation() const
		{return m_store.GetAutoSignalPropagation();}

protected:
	T m_store;
};

//! string-based implementation of Source interface
class CRYPTOPP_DLL StringSource : public SourceTemplate<StringStore>
{
public:
	StringSource(BufferedTransformation *attachment = NULL)
		: SourceTemplate<StringStore>(attachment) {}
	//! zero terminated string as source
	StringSource(const char *string, bool pumpAll, BufferedTransformation *attachment = NULL)
		: SourceTemplate<StringStore>(attachment) {SourceInitialize(pumpAll, MakeParameters("InputBuffer", ConstByteArrayParameter(string)));}
	//! binary byte array as source
	StringSource(const byte *string, size_t length, bool pumpAll, BufferedTransformation *attachment = NULL)
		: SourceTemplate<StringStore>(attachment) {SourceInitialize(pumpAll, MakeParameters("InputBuffer", ConstByteArrayParameter(string, length)));}
	//! std::string as source
	StringSource(const std::string &string, bool pumpAll, BufferedTransformation *attachment = NULL)
		: SourceTemplate<StringStore>(attachment) {SourceInitialize(pumpAll, MakeParameters("InputBuffer", ConstByteArrayParameter(string)));}
};

//! use the third constructor for an array source
typedef StringSource ArraySource;

//! RNG-based implementation of Source interface
class CRYPTOPP_DLL RandomNumberSource : public SourceTemplate<RandomNumberStore>
{
public:
	RandomNumberSource(RandomNumberGenerator &rng, int length, bool pumpAll, BufferedTransformation *attachment = NULL)
		: SourceTemplate<RandomNumberStore>(attachment) 
		{SourceInitialize(pumpAll, MakeParameters("RandomNumberGeneratorPointer", &rng)("RandomNumberStoreSize", length));}
};

NAMESPACE_END

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲最大成人综合| 欧美日本在线视频| 久久精品国产精品青草| 视频一区二区中文字幕| 亚洲a一区二区| 亚洲影院免费观看| 亚洲国产欧美在线人成| 亚洲国产精品欧美一二99| 亚洲精品久久久蜜桃| 一区二区三区高清| 日韩精品视频网| 蜜桃精品视频在线| 国产乱码一区二区三区| 久久精品免费看| 成人欧美一区二区三区1314| 亚洲人成网站在线| 亚洲人成网站在线| 一区二区三区中文字幕在线观看| 成人欧美一区二区三区黑人麻豆| 国产精品国产三级国产aⅴ中文 | 三级成人在线视频| 亚洲精品视频自拍| 亚洲综合小说图片| 亚洲一区二区三区三| 亚洲电影一区二区三区| 亚洲chinese男男1069| 欧美a一区二区| 国产一区二区美女| 成人国产精品免费| 欧美日韩中文国产| 久久精品夜夜夜夜久久| 亚洲男人的天堂在线aⅴ视频| 亚洲成人三级小说| 精品一区二区综合| 色婷婷狠狠综合| 91国在线观看| 久久久久久亚洲综合影院红桃| 久久日一线二线三线suv| 国产欧美一区二区三区沐欲| 最新国产成人在线观看| 视频一区中文字幕| 国产精品一区二区久久不卡| 粉嫩一区二区三区性色av| 色欧美片视频在线观看在线视频| 成人app网站| 欧美日韩国产系列| 亚洲精品一区二区三区精华液| 欧美经典三级视频一区二区三区| 亚洲国产经典视频| 亚洲成人第一页| 国产精品99久久久久久宅男| 色婷婷精品久久二区二区蜜臂av| 4438x亚洲最大成人网| 久久久www免费人成精品| 国产精品一区二区久久精品爱涩| 久久久久久久网| 一区二区成人在线视频| 久久国产精品99精品国产 | 免费观看91视频大全| 国产99精品国产| 欧美欧美欧美欧美| 日韩一区日韩二区| 精品一区二区三区在线观看国产| 激情五月婷婷综合| 在线免费观看日韩欧美| 国产欧美精品一区| 秋霞影院一区二区| 99国产精品久| 久久精品人人做人人综合| 丝瓜av网站精品一区二区| www.亚洲色图| 久久精品男人天堂av| 日本成人在线视频网站| 99精品国产99久久久久久白柏| 精品国产一区二区三区av性色| 一区二区三区免费观看| 高清不卡一区二区在线| 欧美精品乱码久久久久久| 亚洲女人的天堂| 成人精品一区二区三区中文字幕| 欧美videossexotv100| 亚洲自拍都市欧美小说| 色诱视频网站一区| 国产精品国产自产拍在线| 日本在线不卡视频| 欧美性视频一区二区三区| 一区二区成人在线观看| 在线视频一区二区免费| 亚洲精品国产a| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 日产精品久久久久久久性色| 欧洲一区在线观看| 亚洲欧美日韩一区二区三区在线观看| 国产成人自拍网| 国产亚洲欧美色| 国产精品一二三在| 久久久久9999亚洲精品| 国产一区 二区 三区一级| 久久综合久久99| 国产一区二区三区黄视频| 久久这里都是精品| 国产成人99久久亚洲综合精品| 国产欧美一区二区三区在线老狼 | 精品1区2区在线观看| 蜜臀av亚洲一区中文字幕| 日韩午夜中文字幕| 精品一二线国产| 国产拍欧美日韩视频二区| 高清不卡一二三区| 久久久99久久| 国产91精品精华液一区二区三区| 亚洲精品欧美在线| 欧美丰满美乳xxx高潮www| 蜜桃视频免费观看一区| 国产日韩av一区| 色婷婷久久久综合中文字幕| 三级亚洲高清视频| 久久免费午夜影院| 99久久精品情趣| 亚洲一区二区3| 欧美成人高清电影在线| 成人免费视频一区二区| 亚洲黄色性网站| 欧美大胆一级视频| 成人免费电影视频| 天堂蜜桃一区二区三区| 久久久久国色av免费看影院| 色综合久久综合中文综合网| 日一区二区三区| 精品女同一区二区| 粉嫩在线一区二区三区视频| 亚洲国产毛片aaaaa无费看| 日韩欧美一二区| 91日韩一区二区三区| 免费高清不卡av| 日韩码欧中文字| 日韩精品资源二区在线| 99re在线精品| 韩国三级电影一区二区| 一区二区三区在线免费播放| 久久综合狠狠综合久久激情| 91年精品国产| 国产精品香蕉一区二区三区| 亚洲国产精品久久艾草纯爱| 国产欧美综合色| 欧美一级高清片| 欧美亚洲自拍偷拍| 成人免费视频免费观看| 亚洲一区在线看| 国产视频一区在线观看| 精品福利av导航| 欧美日韩国产片| 91福利精品第一导航| 国产成人午夜精品影院观看视频 | 欧美日韩国产精品自在自线| 国产成a人亚洲| 卡一卡二国产精品| 五月激情六月综合| 国产精品视频你懂的| 久久综合色天天久久综合图片| 精品视频一区二区三区免费| 日本高清免费不卡视频| 成人性生交大片免费看在线播放 | 国产精品一区二区无线| 久久成人免费日本黄色| 美女视频黄 久久| 日本美女视频一区二区| 性久久久久久久久久久久| 亚洲日本欧美天堂| 日韩伦理av电影| 国产精品污网站| 国产精品五月天| 国产精品成人一区二区三区夜夜夜| 精品国产百合女同互慰| 精品免费日韩av| 久久蜜桃av一区二区天堂| 精品成人免费观看| 2024国产精品| 日韩欧美一区二区在线视频| 欧美电影一区二区| 国产喷白浆一区二区三区| 国产日产亚洲精品系列| 国产精品久久免费看| 一区二区激情视频| 亚洲a一区二区| 国产在线精品一区二区不卡了| 激情综合色播激情啊| 成人夜色视频网站在线观看| 91在线观看下载| 精品视频色一区| 精品久久久久久无| 亚洲国产激情av| 一区二区三区日本| 免费观看在线综合| 国产91丝袜在线播放0| 成人一级黄色片| 色综合中文字幕国产 | 亚洲国产aⅴ成人精品无吗| 午夜精品福利一区二区蜜股av | 久久久精品综合|