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

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

?? cryptlib.h

?? 研讀AxCrypt對加解密的處理方法
?? H
?? 第 1 頁 / 共 5 頁
字號:
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE PK_Encryptor : virtual public PK_CryptoSystem, public PublicKeyAlgorithm
{
public:
	//! exception thrown when trying to encrypt plaintext of invalid length
	class CRYPTOPP_DLL InvalidPlaintextLength : public Exception
	{
	public:
		InvalidPlaintextLength() : Exception(OTHER_ERROR, "PK_Encryptor: invalid plaintext length") {}
	};

	//! encrypt a byte string
	/*! \pre CiphertextLength(plaintextLength) != 0 (i.e., plaintext isn't too long)
		\pre size of ciphertext == CiphertextLength(plaintextLength)
	*/
	virtual void Encrypt(RandomNumberGenerator &rng, 
		const byte *plaintext, unsigned int plaintextLength, 
		byte *ciphertext, const NameValuePairs &parameters = g_nullNameValuePairs) const =0;

	//! create a new encryption filter
	/*! \note The caller is responsible for deleting the returned pointer.
		\note Encoding parameters should be passed in the "EP" channel.
	*/
	virtual BufferedTransformation * CreateEncryptionFilter(RandomNumberGenerator &rng, 
		BufferedTransformation *attachment=NULL, const NameValuePairs &parameters = g_nullNameValuePairs) const;
};

//! interface for public-key decryptors

class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE PK_Decryptor : virtual public PK_CryptoSystem, public PrivateKeyAlgorithm
{
public:
	//! decrypt a byte string, and return the length of plaintext
	/*! \pre size of plaintext == MaxPlaintextLength(ciphertextLength) bytes.
		\return the actual length of the plaintext, indication that decryption failed.
	*/
	virtual DecodingResult Decrypt(RandomNumberGenerator &rng, 
		const byte *ciphertext, unsigned int ciphertextLength, 
		byte *plaintext, const NameValuePairs &parameters = g_nullNameValuePairs) const =0;

	//! create a new decryption filter
	/*! \note caller is responsible for deleting the returned pointer
	*/
	virtual BufferedTransformation * CreateDecryptionFilter(RandomNumberGenerator &rng, 
		BufferedTransformation *attachment=NULL, const NameValuePairs &parameters = g_nullNameValuePairs) const;

	//! decrypt a fixed size ciphertext
	DecodingResult FixedLengthDecrypt(RandomNumberGenerator &rng, const byte *ciphertext, byte *plaintext, const NameValuePairs &parameters = g_nullNameValuePairs) const
		{return Decrypt(rng, ciphertext, FixedCiphertextLength(), plaintext, parameters);}
};

#ifdef CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY
typedef PK_CryptoSystem PK_FixedLengthCryptoSystem;
typedef PK_Encryptor PK_FixedLengthEncryptor;
typedef PK_Decryptor PK_FixedLengthDecryptor;
#endif

//! interface for public-key signers and verifiers

/*! This class provides an interface common to signers and verifiers
	for querying scheme properties.
*/
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE PK_SignatureScheme
{
public:
	//! invalid key exception, may be thrown by any function in this class if the private or public key has a length that can't be used
	class CRYPTOPP_DLL InvalidKeyLength : public Exception
	{
	public:
		InvalidKeyLength(const std::string &message) : Exception(OTHER_ERROR, message) {}
	};

	//! key too short exception, may be thrown by any function in this class if the private or public key is too short to sign or verify anything
	class CRYPTOPP_DLL KeyTooShort : public InvalidKeyLength
	{
	public:
		KeyTooShort() : InvalidKeyLength("PK_Signer: key too short for this signature scheme") {}
	};

	virtual ~PK_SignatureScheme() {}

	//! signature length if it only depends on the key, otherwise 0
	virtual unsigned int SignatureLength() const =0;

	//! maximum signature length produced for a given length of recoverable message part
	virtual unsigned int MaxSignatureLength(unsigned int recoverablePartLength = 0) const {return SignatureLength();}

	//! length of longest message that can be recovered, or 0 if this signature scheme does not support message recovery
	virtual unsigned int MaxRecoverableLength() const =0;

	//! length of longest message that can be recovered from a signature of given length, or 0 if this signature scheme does not support message recovery
	virtual unsigned int MaxRecoverableLengthFromSignatureLength(unsigned int signatureLength) const =0;

	//! requires a random number generator to sign
	/*! if this returns false, NullRNG() can be passed to functions that take RandomNumberGenerator & */
	virtual bool IsProbabilistic() const =0;

	//! whether or not a non-recoverable message part can be signed
	virtual bool AllowNonrecoverablePart() const =0;

	//! if this function returns true, during verification you must input the signature before the message, otherwise you can input it at anytime */
	virtual bool SignatureUpfront() const {return false;}

	//! whether you must input the recoverable part before the non-recoverable part during signing
	virtual bool RecoverablePartFirst() const =0;
};

//! interface for accumulating messages to be signed or verified
/*! Only Update() should be called
	on this class. No other functions inherited from HashTransformation should be called.
*/
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE PK_MessageAccumulator : public HashTransformation
{
public:
	//! should not be called on PK_MessageAccumulator
	unsigned int DigestSize() const
		{throw NotImplemented("PK_MessageAccumulator: DigestSize() should not be called");}
	//! should not be called on PK_MessageAccumulator
	void TruncatedFinal(byte *digest, unsigned int digestSize) 
		{throw NotImplemented("PK_MessageAccumulator: TruncatedFinal() should not be called");}
};

//! interface for public-key signers

class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE PK_Signer : public PK_SignatureScheme, public PrivateKeyAlgorithm
{
public:
	//! create a new HashTransformation to accumulate the message to be signed
	virtual PK_MessageAccumulator * NewSignatureAccumulator(RandomNumberGenerator &rng) const =0;

	virtual void InputRecoverableMessage(PK_MessageAccumulator &messageAccumulator, const byte *recoverableMessage, unsigned int recoverableMessageLength) const =0;

	//! sign and delete messageAccumulator (even in case of exception thrown)
	/*! \pre size of signature == MaxSignatureLength()
		\return actual signature length
	*/
	virtual unsigned int Sign(RandomNumberGenerator &rng, PK_MessageAccumulator *messageAccumulator, byte *signature) const;

	//! sign and restart messageAccumulator
	/*! \pre size of signature == MaxSignatureLength()
		\return actual signature length
	*/
	virtual unsigned int SignAndRestart(RandomNumberGenerator &rng, PK_MessageAccumulator &messageAccumulator, byte *signature, bool restart=true) const =0;

	//! sign a message
	/*! \pre size of signature == MaxSignatureLength()
		\return actual signature length
	*/
	virtual unsigned int SignMessage(RandomNumberGenerator &rng, const byte *message, unsigned int messageLen, byte *signature) const;

	//! sign a recoverable message
	/*! \pre size of signature == MaxSignatureLength(recoverableMessageLength)
		\return actual signature length
	*/
	virtual unsigned int SignMessageWithRecovery(RandomNumberGenerator &rng, const byte *recoverableMessage, unsigned int recoverableMessageLength, 
		const byte *nonrecoverableMessage, unsigned int nonrecoverableMessageLength, byte *signature) const;
};

//! interface for public-key signature verifiers
/*! The Recover* functions throw NotImplemented if the signature scheme does not support
	message recovery.
	The Verify* functions throw InvalidDataFormat if the scheme does support message
	recovery and the signature contains a non-empty recoverable message part. The
	Recovery* functions should be used in that case.
*/
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE PK_Verifier : public PK_SignatureScheme, public PublicKeyAlgorithm
{
public:
	//! create a new HashTransformation to accumulate the message to be verified
	virtual PK_MessageAccumulator * NewVerificationAccumulator() const =0;

	//! input signature into a message accumulator
	virtual void InputSignature(PK_MessageAccumulator &messageAccumulator, const byte *signature, unsigned int signatureLength) const =0;

	//! check whether messageAccumulator contains a valid signature and message, and delete messageAccumulator (even in case of exception thrown)
	virtual bool Verify(PK_MessageAccumulator *messageAccumulator) const;

	//! check whether messageAccumulator contains a valid signature and message, and restart messageAccumulator
	virtual bool VerifyAndRestart(PK_MessageAccumulator &messageAccumulator) const =0;

	//! check whether input signature is a valid signature for input message
	virtual bool VerifyMessage(const byte *message, unsigned int messageLen, 
		const byte *signature, unsigned int signatureLength) const;

	//! recover a message from its signature
	/*! \pre size of recoveredMessage == MaxRecoverableLengthFromSignatureLength(signatureLength)
	*/
	virtual DecodingResult Recover(byte *recoveredMessage, PK_MessageAccumulator *messageAccumulator) const;

	//! recover a message from its signature
	/*! \pre size of recoveredMessage == MaxRecoverableLengthFromSignatureLength(signatureLength)
	*/
	virtual DecodingResult RecoverAndRestart(byte *recoveredMessage, PK_MessageAccumulator &messageAccumulator) const =0;

	//! recover a message from its signature
	/*! \pre size of recoveredMessage == MaxRecoverableLengthFromSignatureLength(signatureLength)
	*/
	virtual DecodingResult RecoverMessage(byte *recoveredMessage, 
		const byte *nonrecoverableMessage, unsigned int nonrecoverableMessageLength, 
		const byte *signature, unsigned int signatureLength) const;
};

//! interface for domains of simple key agreement protocols

/*! A key agreement domain is a set of parameters that must be shared
	by two parties in a key agreement protocol, along with the algorithms
	for generating key pairs and deriving agreed values.
*/
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE SimpleKeyAgreementDomain : public KeyAgreementAlgorithm
{
public:
	//! return length of agreed value produced
	virtual unsigned int AgreedValueLength() const =0;
	//! return length of private keys in this domain
	virtual unsigned int PrivateKeyLength() const =0;
	//! return length of public keys in this domain
	virtual unsigned int PublicKeyLength() const =0;
	//! generate private key
	/*! \pre size of privateKey == PrivateKeyLength() */
	virtual void GeneratePrivateKey(RandomNumberGenerator &rng, byte *privateKey) const =0;
	//! generate public key
	/*!	\pre size of publicKey == PublicKeyLength() */
	virtual void GeneratePublicKey(RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const =0;
	//! generate private/public key pair
	/*! \note equivalent to calling GeneratePrivateKey() and then GeneratePublicKey() */
	virtual void GenerateKeyPair(RandomNumberGenerator &rng, byte *privateKey, byte *publicKey) const;
	//! derive agreed value from your private key and couterparty's public key, return false in case of failure
	/*! \note If you have previously validated the public key, use validateOtherPublicKey=false to save time.
		\pre size of agreedValue == AgreedValueLength()
		\pre length of privateKey == PrivateKeyLength()
		\pre length of otherPublicKey == PublicKeyLength()
	*/
	virtual bool Agree(byte *agreedValue, const byte *privateKey, const byte *otherPublicKey, bool validateOtherPublicKey=true) const =0;

#ifdef CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY
	bool ValidateDomainParameters(RandomNumberGenerator &rng) const
		{return GetCryptoParameters().Validate(rng, 2);}
#endif
};

//! interface for domains of authenticated key agreement protocols

/*! In an authenticated key agreement protocol, each party has two
	key pairs. The long-lived key pair is called the static key pair,
	and the short-lived key pair is called the ephemeral key pair.
*/
class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE AuthenticatedKeyAgreementDomain : public KeyAgreementAlgorithm
{
public:
	//! return length of agreed value produced
	virtual unsigned int AgreedValueLength() const =0;

	//! return length of static private keys in this domain
	virtual unsigned int StaticPrivateKeyLength() const =0;
	//! return length of static public keys in this domain
	virtual unsigned int StaticPublicKeyLength() const =0;
	//! generate static private key
	/*! \pre size of privateKey == PrivateStaticKeyLength() */
	virtual void GenerateStaticPrivateKey(RandomNumberGenerator &rng, byte *privateKey) const =0;
	//! generate static public key
	/*!	\pre size of publicKey == PublicStaticKeyLength() */
	virtual void GenerateStaticPublicKey(RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const =0;
	//! generate private/public key pair
	/*! \note equivalent to calling GenerateStaticPrivateKey() and then GenerateStaticPublicKey() */
	virtual void GenerateStaticKeyPair(RandomNumberGenerator &rng, byte *privateKey, byte *publicKey) const;

	//! return length of ephemeral private keys in this domain
	virtual unsigned int EphemeralPrivateKeyLength() const =0;
	//! return length of ephemeral public keys in this domain
	virtual unsigned int EphemeralPublicKeyLength() const =0;
	//! generate ephemeral private key
	/*! \pre size of privateKey == PrivateEphemeralKeyLength() */
	virtual void GenerateEphemeralPrivateKey(RandomNumberGenerator &rng, byte *privateKey) const =0;
	//! generate ephemeral public key
	/*!	\pre size of publicKey == PublicEphemeralKeyLength() */
	virtual void GenerateEphemeralPublicKey(RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const =0;
	//! generate private/public key pair
	/*! \note equivalent to calling GenerateEphemeralPrivateKey() and then GenerateEphemeralPublicKey() */
	virtual void GenerateEphemeralKeyPair(RandomNumberGenerator &rng, byte *privateKey, byte *publicKey) const;

	//! derive agreed value from your private keys and couterparty's public keys, return false in case of failure
	/*! \note The ephemeral public key will always be validated.
		      If you have previously validated the static public key, use validateStaticOtherPublicKey=false to save time.
	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕在线一区| 天天综合色天天| 午夜视频久久久久久| 国产做a爰片久久毛片| 在线视频一区二区免费| 久久精品免视看| 婷婷中文字幕一区三区| 91原创在线视频| 久久香蕉国产线看观看99| 香蕉成人啪国产精品视频综合网| 激情偷乱视频一区二区三区| 欧美日韩国产一级二级| 国产精品成人午夜| 国产乱理伦片在线观看夜一区 | 麻豆91在线播放免费| 色哟哟国产精品免费观看| 国产人成一区二区三区影院| 日韩精品每日更新| 91久久国产综合久久| 中文字幕制服丝袜成人av| 国产99一区视频免费| 欧美精品一区二区三区在线| 日本美女一区二区三区视频| 欧美网站大全在线观看| 亚洲欧美综合另类在线卡通| 久久成人av少妇免费| 91福利在线观看| 亚洲人成亚洲人成在线观看图片 | 91色婷婷久久久久合中文| 久久久久久久综合日本| 久久 天天综合| 欧美www视频| 久久电影网站中文字幕| 精品99一区二区| 国内精品国产三级国产a久久| 精品美女在线播放| 国产精品小仙女| 国产喷白浆一区二区三区| 国产99久久久国产精品潘金| 亚洲国产精品成人综合色在线婷婷| 国产成人午夜片在线观看高清观看| 久久综合久久鬼色| 成人av电影在线观看| 亚洲视频在线一区观看| 欧美在线免费观看亚洲| 亚洲h精品动漫在线观看| 91精品国产91久久久久久最新毛片| 亚洲国产精品久久一线不卡| 在线播放欧美女士性生活| 三级一区在线视频先锋| 日韩美女视频在线| 国产寡妇亲子伦一区二区| 国产精品电影院| 欧美午夜精品久久久久久孕妇| 无吗不卡中文字幕| 久久免费看少妇高潮| 99久久99精品久久久久久| 一区二区三区中文字幕精品精品| 欧美色综合天天久久综合精品| 午夜欧美大尺度福利影院在线看| 日韩一区二区在线观看| 国产99久久久国产精品潘金| 亚洲人成7777| 欧美电影免费观看高清完整版在 | av中文字幕在线不卡| 亚洲成人免费在线观看| 久久日韩粉嫩一区二区三区| 99视频精品在线| 青青草成人在线观看| 中文字幕+乱码+中文字幕一区| 色猫猫国产区一区二在线视频| 婷婷开心激情综合| 国产欧美日韩在线观看| 欧美色图激情小说| 国产河南妇女毛片精品久久久| 亚洲综合一区二区三区| 欧美r级在线观看| 在线视频欧美精品| 国产精品中文字幕日韩精品| 亚洲五码中文字幕| 久久久精品人体av艺术| 欧美日本高清视频在线观看| 成人免费的视频| 水蜜桃久久夜色精品一区的特点| 国产欧美精品一区二区色综合朱莉| 欧美日韩三级视频| 成人午夜视频在线观看| 男女激情视频一区| 夜夜精品浪潮av一区二区三区| 日韩欧美第一区| 欧美视频在线一区| 99视频精品免费视频| 国产精品一区二区久久不卡| 图片区小说区区亚洲影院| 亚洲美女在线一区| 中文字幕高清不卡| 久久久精品中文字幕麻豆发布| 91精品国产色综合久久不卡蜜臀| 色综合一区二区| 成人一区二区在线观看| 国产自产2019最新不卡| 免费在线欧美视频| 日韩专区一卡二卡| 亚洲一二三四久久| 亚洲综合网站在线观看| 亚洲欧洲av在线| 国产精品久久网站| 中文字幕第一区| 国产精品无圣光一区二区| 精品久久久久久综合日本欧美| 欧美一区二区三区不卡| 欧美久久久久久蜜桃| 欧美日韩免费高清一区色橹橹| 91丨国产丨九色丨pron| 99精品欧美一区二区三区小说| 国产91对白在线观看九色| 九九九久久久精品| 精品一区二区精品| 韩国av一区二区三区四区| 国产专区综合网| 国产成人一级电影| 福利一区福利二区| 成人教育av在线| 色综合中文字幕国产 | 在线观看一区不卡| 欧美性高清videossexo| 欧美精品三级日韩久久| 欧美一区二区三区四区久久| 日韩欧美一区二区不卡| 欧美tk丨vk视频| 国产精品情趣视频| 亚洲在线中文字幕| 日本欧美大码aⅴ在线播放| 另类的小说在线视频另类成人小视频在线 | 欧美少妇一区二区| 欧美日韩一级二级三级| 日韩精品在线网站| 国产精品丝袜一区| 亚洲综合丝袜美腿| 久久黄色级2电影| 国产999精品久久| 91视频在线看| 欧美日韩三级一区二区| 日韩欧美你懂的| 中文字幕高清一区| 五月天激情综合网| 国产69精品久久久久毛片| 欧美性淫爽ww久久久久无| 日韩欧美色综合网站| 亚洲欧美日韩久久| 日韩va亚洲va欧美va久久| 成人午夜在线免费| 欧美一区二区在线观看| 国产精品美女一区二区在线观看| 亚洲综合无码一区二区| 国产一区二区电影| 欧美伊人久久久久久午夜久久久久| 日韩精品在线一区二区| 亚洲人成在线观看一区二区| 另类小说视频一区二区| 91久久精品国产91性色tv| 2021中文字幕一区亚洲| 香蕉影视欧美成人| av不卡在线播放| 精品乱人伦小说| 午夜电影网一区| 不卡视频免费播放| 精品国产乱码久久久久久免费 | 国产69精品久久99不卡| 91精品蜜臀在线一区尤物| 中文字幕日本乱码精品影院| 麻豆精品一二三| 色av综合在线| 国产精品免费免费| 韩国成人精品a∨在线观看| 欧美日韩精品一区二区在线播放 | 精品免费日韩av| 亚洲电影第三页| 91在线免费看| 国产女人18毛片水真多成人如厕| 日本不卡高清视频| 色呦呦网站一区| 国产精品女同一区二区三区| 激情综合色综合久久| 91精品国产一区二区三区香蕉| 亚洲综合一区二区三区| 色综合久久久网| 国产精品无遮挡| 国产精品18久久久久久久久| 日韩精品一区二区三区视频播放| 亚洲h精品动漫在线观看| 欧美在线影院一区二区| 一级做a爱片久久| 一本久道久久综合中文字幕 | 成人免费看视频| 久久久天堂av| 国产精品夜夜爽| 国产欧美一区二区在线| 国产精品资源网站| 国产欧美在线观看一区|