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

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

?? cryptlib.h

?? 研讀AxCrypt對加解密的處理方法
?? H
?? 第 1 頁 / 共 5 頁
字號:

	//! truncated version of Verify()
	virtual bool TruncatedVerify(const byte *digest, unsigned int digestLength);

	//! truncated version of VerifyDigest()
	virtual bool VerifyTruncatedDigest(const byte *digest, unsigned int digestLength, const byte *input, unsigned int length)
		{Update(input, length); return TruncatedVerify(digest, digestLength);}

protected:
	void ThrowIfInvalidTruncatedSize(unsigned int size) const;
};

typedef HashTransformation HashFunction;

template <class T>
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE SimpleKeyedTransformation : public T, public SimpleKeyingInterface
{
public:
	void ThrowIfInvalidKeyLength(unsigned int length)
		{SimpleKeyingInterface::ThrowIfInvalidKeyLength(*this, length);}
};

#ifdef CRYPTOPP_DOXYGEN_PROCESSING
//! interface for one direction (encryption or decryption) of a block cipher
/*! \note These objects usually should not be used directly. See BlockTransformation for more details. */
class BlockCipher : public BlockTransformation, public SimpleKeyingInterface {};
//! interface for one direction (encryption or decryption) of a stream cipher or cipher mode
class SymmetricCipher : public StreamTransformation, public SimpleKeyingInterface {};
//! interface for message authentication codes
class MessageAuthenticationCode : public HashTransformation, public SimpleKeyingInterface {};
#else
typedef SimpleKeyedTransformation<BlockTransformation> BlockCipher;
typedef SimpleKeyedTransformation<StreamTransformation> SymmetricCipher;
typedef SimpleKeyedTransformation<HashTransformation> MessageAuthenticationCode;
#endif

CRYPTOPP_DLL_TEMPLATE_CLASS SimpleKeyedTransformation<BlockTransformation>;
CRYPTOPP_DLL_TEMPLATE_CLASS SimpleKeyedTransformation<StreamTransformation>;
CRYPTOPP_DLL_TEMPLATE_CLASS SimpleKeyedTransformation<HashTransformation>;

#ifdef CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY
typedef SymmetricCipher StreamCipher;
#endif

//! interface for random number generators
/*! All return values are uniformly distributed over the range specified.
*/
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE RandomNumberGenerator : public Algorithm
{
public:
	//! generate new random byte and return it
	virtual byte GenerateByte() =0;

	//! generate new random bit and return it
	/*! Default implementation is to call GenerateByte() and return its parity. */
	virtual unsigned int GenerateBit();

	//! generate a random 32 bit word in the range min to max, inclusive
	virtual word32 GenerateWord32(word32 a=0, word32 b=0xffffffffL);

	//! generate random array of bytes
	/*! Default implementation is to call GenerateByte() size times. */
	virtual void GenerateBlock(byte *output, unsigned int size);

	//! generate and discard n bytes
	/*! Default implementation is to call GenerateByte() n times. */
	virtual void DiscardBytes(unsigned int n);

	//! randomly shuffle the specified array, resulting permutation is uniformly distributed
	template <class IT> void Shuffle(IT begin, IT end)
	{
		for (; begin != end; ++begin)
			std::iter_swap(begin, begin + GenerateWord32(0, end-begin-1));
	}

#ifdef CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY
	byte GetByte() {return GenerateByte();}
	unsigned int GetBit() {return GenerateBit();}
	word32 GetLong(word32 a=0, word32 b=0xffffffffL) {return GenerateWord32(a, b);}
	word16 GetShort(word16 a=0, word16 b=0xffff) {return (word16)GenerateWord32(a, b);}
	void GetBlock(byte *output, unsigned int size) {GenerateBlock(output, size);}
#endif
};

//! returns a reference that can be passed to functions that ask for a RNG but doesn't actually use it
CRYPTOPP_DLL RandomNumberGenerator & NullRNG();

class WaitObjectContainer;

//! interface for objects that you can wait for

class CRYPTOPP_NO_VTABLE Waitable
{
public:
	//! maximum number of wait objects that this object can return
	virtual unsigned int GetMaxWaitObjectCount() const =0;
	//! put wait objects into container
	virtual void GetWaitObjects(WaitObjectContainer &container) =0;
	//! wait on this object
	/*! same as creating an empty container, calling GetWaitObjects(), and calling Wait() on the container */
	bool Wait(unsigned long milliseconds);
};

//! interface for buffered transformations

/*! BufferedTransformation is a generalization of BlockTransformation,
	StreamTransformation, and HashTransformation.

	A buffered transformation is an object that takes a stream of bytes
	as input (this may be done in stages), does some computation on them, and
	then places the result into an internal buffer for later retrieval.  Any
	partial result already in the output buffer is not modified by further
	input.

	If a method takes a "blocking" parameter, and you
	pass "false" for it, the method will return before all input has been processed if
	the input cannot be processed without waiting (for network buffers to become available, for example).
	In this case the method will return true
	or a non-zero integer value. When this happens you must continue to call the method with the same
	parameters until it returns false or zero, before calling any other method on it or
	attached BufferedTransformation. The integer return value in this case is approximately
	the number of bytes left to be processed, and can be used to implement a progress bar.

	For functions that take a "propagation" parameter, propagation != 0 means pass on the signal to attached
	BufferedTransformation objects, with propagation decremented at each step until it reaches 0.
	-1 means unlimited propagation.

	\nosubgrouping
*/
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE BufferedTransformation : public Algorithm, public Waitable
{
public:
	// placed up here for CW8
	static const std::string NULL_CHANNEL;	// the empty string ""

	BufferedTransformation() : Algorithm(false) {}

	//! return a reference to this object
	/*! This function is useful for passing a temporary BufferedTransformation object to a 
		function that takes a non-const reference. */
	BufferedTransformation& Ref() {return *this;}

	//!	\name INPUT
	//@{
		//! input a byte for processing
		unsigned int Put(byte inByte, bool blocking=true)
			{return Put(&inByte, 1, blocking);}
		//! input multiple bytes
		unsigned int Put(const byte *inString, unsigned int length, bool blocking=true)
			{return Put2(inString, length, 0, blocking);}

		//! input a 16-bit word
		unsigned int PutWord16(word16 value, ByteOrder order=BIG_ENDIAN_ORDER, bool blocking=true);
		//! input a 32-bit word
		unsigned int PutWord32(word32 value, ByteOrder order=BIG_ENDIAN_ORDER, bool blocking=true);

		//! request space which can be written into by the caller, and then used as input to Put()
		/*! \param size is requested size (as a hint) for input, and size of the returned space for output */
		/*! \note The purpose of this method is to help avoid doing extra memory allocations. */
		virtual byte * CreatePutSpace(unsigned int &size) {size=0; return NULL;}

		virtual bool CanModifyInput() const {return false;}

		//! input multiple bytes that may be modified by callee
		unsigned int PutModifiable(byte *inString, unsigned int length, bool blocking=true)
			{return PutModifiable2(inString, length, 0, blocking);}

		bool MessageEnd(int propagation=-1, bool blocking=true)
			{return !!Put2(NULL, 0, propagation < 0 ? -1 : propagation+1, blocking);}
		unsigned int PutMessageEnd(const byte *inString, unsigned int length, int propagation=-1, bool blocking=true)
			{return Put2(inString, length, propagation < 0 ? -1 : propagation+1, blocking);}

		//! input multiple bytes for blocking or non-blocking processing
		/*! \param messageEnd means how many filters to signal MessageEnd to, including this one */
		virtual unsigned int Put2(const byte *inString, unsigned int length, int messageEnd, bool blocking) =0;
		//! input multiple bytes that may be modified by callee for blocking or non-blocking processing
		/*! \param messageEnd means how many filters to signal MessageEnd to, including this one */
		virtual unsigned int PutModifiable2(byte *inString, unsigned int length, int messageEnd, bool blocking)
			{return Put2(inString, length, messageEnd, blocking);}

		//! thrown by objects that have not implemented nonblocking input processing
		struct BlockingInputOnly : public NotImplemented
			{BlockingInputOnly(const std::string &s) : NotImplemented(s + ": Nonblocking input is not implemented by this object.") {}};
	//@}

	//!	\name WAITING
	//@{
		unsigned int GetMaxWaitObjectCount() const;
		void GetWaitObjects(WaitObjectContainer &container);
	//@}

	//!	\name SIGNALS
	//@{
		virtual void IsolatedInitialize(const NameValuePairs &parameters) {throw NotImplemented("BufferedTransformation: this object can't be reinitialized");}
		virtual bool IsolatedFlush(bool hardFlush, bool blocking) =0;
		virtual bool IsolatedMessageSeriesEnd(bool blocking) {return false;}

		//! initialize or reinitialize this object
		virtual void Initialize(const NameValuePairs &parameters=g_nullNameValuePairs, int propagation=-1);
		//! flush buffered input and/or output
		/*! \param hardFlush is used to indicate whether all data should be flushed
			\note Hard flushes must be used with care. It means try to process and output everything, even if
			there may not be enough data to complete the action. For example, hard flushing a HexDecoder would
			cause an error if you do it after inputing an odd number of hex encoded characters.
			For some types of filters, for example ZlibDecompressor, hard flushes can only
			be done at "synchronization points". These synchronization points are positions in the data
			stream that are created by hard flushes on the corresponding reverse filters, in this
			example ZlibCompressor. This is useful when zlib compressed data is moved across a
			network in packets and compression state is preserved across packets, as in the ssh2 protocol.
		*/
		virtual bool Flush(bool hardFlush, int propagation=-1, bool blocking=true);
		//! mark end of a series of messages
		/*! There should be a MessageEnd immediately before MessageSeriesEnd. */
		virtual bool MessageSeriesEnd(int propagation=-1, bool blocking=true);

		//! set propagation of automatically generated and transferred signals
		/*! propagation == 0 means do not automaticly generate signals */
		virtual void SetAutoSignalPropagation(int propagation) {}

		//!
		virtual int GetAutoSignalPropagation() const {return 0;}
public:

#ifdef CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY
		void Close() {MessageEnd();}
#endif
	//@}

	//!	\name RETRIEVAL OF ONE MESSAGE
	//@{
		//! returns number of bytes that is currently ready for retrieval
		/*! All retrieval functions return the actual number of bytes
			retrieved, which is the lesser of the request number and
			MaxRetrievable(). */
		virtual unsigned long MaxRetrievable() const;

		//! returns whether any bytes are currently ready for retrieval
		virtual bool AnyRetrievable() const;

		//! try to retrieve a single byte
		virtual unsigned int Get(byte &outByte);
		//! try to retrieve multiple bytes
		virtual unsigned int Get(byte *outString, unsigned int getMax);

		//! peek at the next byte without removing it from the output buffer
		virtual unsigned int Peek(byte &outByte) const;
		//! peek at multiple bytes without removing them from the output buffer
		virtual unsigned int Peek(byte *outString, unsigned int peekMax) const;

		//! try to retrieve a 16-bit word
		unsigned int GetWord16(word16 &value, ByteOrder order=BIG_ENDIAN_ORDER);
		//! try to retrieve a 32-bit word
		unsigned int GetWord32(word32 &value, ByteOrder order=BIG_ENDIAN_ORDER);

		//! try to peek at a 16-bit word
		unsigned int PeekWord16(word16 &value, ByteOrder order=BIG_ENDIAN_ORDER);
		//! try to peek at a 32-bit word
		unsigned int PeekWord32(word32 &value, ByteOrder order=BIG_ENDIAN_ORDER);

		//! move transferMax bytes of the buffered output to target as input
		unsigned long TransferTo(BufferedTransformation &target, unsigned long transferMax=ULONG_MAX, const std::string &channel=NULL_CHANNEL)
			{TransferTo2(target, transferMax, channel); return transferMax;}

		//! discard skipMax bytes from the output buffer
		virtual unsigned long Skip(unsigned long skipMax=ULONG_MAX);

		//! copy copyMax bytes of the buffered output to target as input
		unsigned long CopyTo(BufferedTransformation &target, unsigned long copyMax=ULONG_MAX, const std::string &channel=NULL_CHANNEL) const
			{return CopyRangeTo(target, 0, copyMax, channel);}

		//! copy copyMax bytes of the buffered output, starting at position (relative to current position), to target as input
		unsigned long CopyRangeTo(BufferedTransformation &target, unsigned long position, unsigned long copyMax=ULONG_MAX, const std::string &channel=NULL_CHANNEL) const
			{unsigned long i = position; CopyRangeTo2(target, i, i+copyMax, channel); return i-position;}

#ifdef CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY
		unsigned long MaxRetrieveable() const {return MaxRetrievable();}
#endif
	//@}

	//!	\name RETRIEVAL OF MULTIPLE MESSAGES
	//@{
		//!
		virtual unsigned long TotalBytesRetrievable() const;
		//! number of times MessageEnd() has been received minus messages retrieved or skipped
		virtual unsigned int NumberOfMessages() const;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线不卡欧美精品一区二区三区| 欧美二区三区的天堂| 色菇凉天天综合网| 欧美电视剧在线观看完整版| 中文字幕中文字幕中文字幕亚洲无线 | 秋霞午夜av一区二区三区| 国产成人免费视频网站高清观看视频 | 国产精品一区二区你懂的| 色悠悠久久综合| 久久综合一区二区| 亚洲一区二区精品视频| 粉嫩一区二区三区性色av| 欧美日韩一区二区欧美激情| 欧美国产乱子伦| 另类的小说在线视频另类成人小视频在线| 成人一区二区三区| 欧美精品一区在线观看| 午夜伊人狠狠久久| 一本一道综合狠狠老| 国产女主播在线一区二区| 日韩电影在线一区| 欧美色图在线观看| 一区二区三区日韩精品| 成人av先锋影音| 国产午夜亚洲精品午夜鲁丝片 | 日韩电影免费在线观看网站| 成人国产精品免费观看视频| 精品国产乱码久久久久久老虎| 亚洲自拍欧美精品| 91福利区一区二区三区| 亚洲视频中文字幕| 97se亚洲国产综合在线| 国产精品亲子乱子伦xxxx裸| 国产精品一区二区在线看| 亚洲精品一区二区在线观看| 蜜桃视频第一区免费观看| 欧美酷刑日本凌虐凌虐| 亚洲午夜精品17c| 91国偷自产一区二区三区成为亚洲经典| 欧美激情一区二区三区在线| 国产高清成人在线| 国产精品污www在线观看| 高清不卡一区二区| 中文字幕佐山爱一区二区免费| 黄色小说综合网站| 久久午夜色播影院免费高清 | 99国产欧美久久久精品| 国产精品短视频| 日本久久精品电影| 午夜精品福利视频网站| 日韩午夜精品视频| 国产高清一区日本| 亚洲免费av观看| 69堂精品视频| 国产精品综合在线视频| 国产精品久久久久一区二区三区 | 亚洲欧洲精品成人久久奇米网| 91尤物视频在线观看| 一区二区三区在线高清| 日韩欧美国产1| 99热99精品| 午夜精品一区在线观看| 欧美日韩精品欧美日韩精品一| 亚洲色图19p| 粉嫩蜜臀av国产精品网站| 一区二区三区四区五区视频在线观看| gogo大胆日本视频一区| 中文字幕乱码亚洲精品一区| 国产精品亚洲综合一区在线观看| 老司机精品视频线观看86| 国产日本欧美一区二区| 成人一区二区视频| 日本一区二区三区高清不卡| 国产麻豆日韩欧美久久| 欧美成人r级一区二区三区| 一区二区三区中文字幕电影| 精品国精品国产| 国产精品亚洲一区二区三区在线| 久久久久久亚洲综合影院红桃| 久国产精品韩国三级视频| 精品免费国产一区二区三区四区| 亚洲国产中文字幕| 国产精品乱码久久久久久| 成人做爰69片免费看网站| 中文字幕在线播放不卡一区| yourporn久久国产精品| 一区二区三区四区不卡在线| 精品一区二区三区免费观看| 成人av影院在线| 亚洲精品成人悠悠色影视| 欧美日韩国产综合一区二区三区| 香蕉av福利精品导航| 欧美探花视频资源| 91欧美激情一区二区三区成人| 亚洲另类一区二区| 3d动漫精品啪啪| 国产一区二区视频在线播放| 国产精品午夜在线观看| 久久免费电影网| 在线亚洲+欧美+日本专区| 日本不卡视频在线观看| 久久人人超碰精品| www.亚洲激情.com| 亚洲高清在线视频| 久久久精品免费网站| 色综合天天综合网天天狠天天 | 欧美日韩亚洲丝袜制服| 久久99精品久久久久婷婷| 亚洲女人****多毛耸耸8| 亚洲欧洲日产国码二区| 欧美日韩精品综合在线| 精品一区二区三区视频在线观看| 亚洲人成网站色在线观看| 欧美一级片在线| 国产伦精一区二区三区| 亚洲精品你懂的| 久久久久久久久久久电影| 色94色欧美sute亚洲线路一久| 激情文学综合网| 国产精品美女久久久久久久久| 欧美日韩在线不卡| 91最新地址在线播放| 捆绑紧缚一区二区三区视频| 最近中文字幕一区二区三区| 欧美卡1卡2卡| 精品久久99ma| 欧美日韩成人在线| 91一区在线观看| 国产+成+人+亚洲欧洲自线| 久久精品国产成人一区二区三区| 婷婷久久综合九色国产成人| 亚洲三级久久久| 国产精品久久久久婷婷| 国产欧美日韩久久| 欧美xxxxxxxxx| 欧美一区二区国产| 久久av老司机精品网站导航| 国产精品一品视频| 久久精品久久久精品美女| 亚洲图片欧美视频| 亚洲综合一区在线| 欧美一区二区三区婷婷月色| 国产丝袜美腿一区二区三区| 日韩精品资源二区在线| 欧美人与性动xxxx| 欧美日韩国产美| 国产精品羞羞答答xxdd| 色视频欧美一区二区三区| 成人性生交大合| 高清av一区二区| 国产乱子轮精品视频| 国产视频911| 亚洲国产欧美在线人成| 亚洲制服欧美中文字幕中文字幕| 亚洲欧美日韩国产中文在线| 中文字幕亚洲在| 在线免费观看日本一区| 久久香蕉国产线看观看99| 久久亚洲综合av| 久久九九久精品国产免费直播| 一本久道久久综合中文字幕| 日韩欧美在线1卡| 精品处破学生在线二十三| 欧美精品一区二区三区在线| 精品电影一区二区| 91精品国模一区二区三区| 亚洲欧洲日韩av| 亚洲午夜精品在线| 亚洲曰韩产成在线| 18欧美亚洲精品| 日日嗨av一区二区三区四区| 亚洲美女免费视频| 亚洲成人高清在线| 九色|91porny| 成人国产亚洲欧美成人综合网| 国产河南妇女毛片精品久久久 | 久久99精品国产麻豆不卡| 国产乱子伦视频一区二区三区 | 99视频精品在线| 99在线精品一区二区三区| 91成人国产精品| 欧美日韩免费一区二区三区视频| 精品国产凹凸成av人网站| 中文字幕在线观看不卡视频| 五月天一区二区三区| 国产一区二区免费在线| 91视频一区二区| 中文字幕一区日韩精品欧美| 亚洲一区影音先锋| 蜜臀国产一区二区三区在线播放| 国产69精品一区二区亚洲孕妇| 日韩免费看的电影| 亚洲激情欧美激情| 最新久久zyz资源站| 理论片日本一区| 欧美在线观看一二区| 色综合网站在线| 亚洲综合丁香婷婷六月香| 国产成人在线影院| 欧美日韩在线播|