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

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

?? elgamal.h

?? 此文件是實(shí)現(xiàn)加解密算法的函數(shù)庫(kù)
?? H
字號(hào):
#ifndef CRYPTOPP_ELGAMAL_H
#define CRYPTOPP_ELGAMAL_H

#include "modexppc.h"
#include "dsa.h"

NAMESPACE_BEGIN(CryptoPP)

class ElGamalBase : public DL_KeyAgreementAlgorithm_DH<Integer, NoCofactorMultiplication>, 
					public DL_KeyDerivationAlgorithm<Integer>, 
					public DL_SymmetricEncryptionAlgorithm
{
public:
	void Derive(const DL_GroupParameters<Integer> &params, byte *derivedKey, unsigned int derivedLength, const Integer &agreedElement, const Integer &ephemeralPublicKey) const
	{
		agreedElement.Encode(derivedKey, derivedLength);
	}

	unsigned int GetSymmetricKeyLength(unsigned int plainTextLength) const
	{
		return GetGroupParameters().GetModulus().ByteCount();
	}

	unsigned int GetSymmetricCiphertextLength(unsigned int plainTextLength) const
	{
		unsigned int len = GetGroupParameters().GetModulus().ByteCount();
		if (plainTextLength <= GetMaxSymmetricPlaintextLength(len))
			return len;
		else
			return 0;
	}

	unsigned int GetMaxSymmetricPlaintextLength(unsigned int cipherTextLength) const
	{
		unsigned int len = GetGroupParameters().GetModulus().ByteCount();
		if (cipherTextLength == len)
			return STDMIN(255U, len-3);
		else
			return 0;
	}

	void SymmetricEncrypt(RandomNumberGenerator &rng, const byte *key, const byte *plainText, unsigned int plainTextLength, byte *cipherText) const
	{
		const Integer &p = GetGroupParameters().GetModulus();
		unsigned int modulusLen = p.ByteCount();

		SecByteBlock block(modulusLen-1);
		rng.GenerateBlock(block, modulusLen-2-plainTextLength);
		memcpy(block+modulusLen-2-plainTextLength, plainText, plainTextLength);
		block[modulusLen-2] = plainTextLength;

		a_times_b_mod_c(Integer(key, modulusLen), Integer(block, modulusLen-1), p).Encode(cipherText, modulusLen);
	}

	DecodingResult SymmetricDecrypt(const byte *key, const byte *cipherText, unsigned int cipherTextLength, byte *plainText) const
	{
		const Integer &p = GetGroupParameters().GetModulus();
		unsigned int modulusLen = p.ByteCount();

		if (cipherTextLength != modulusLen)
			return DecodingResult();

		Integer m = a_times_b_mod_c(Integer(cipherText, modulusLen), Integer(key, modulusLen).InverseMod(p), p);

		m.Encode(plainText, 1);
		unsigned int plainTextLength = plainText[0];
		if (plainTextLength > GetMaxSymmetricPlaintextLength(modulusLen))
			return DecodingResult();
		m >>= 8;
		m.Encode(plainText, plainTextLength);
		return DecodingResult(plainTextLength);
	}

	virtual const DL_GroupParameters_GFP & GetGroupParameters() const =0;
};

template <class BASE, class SCHEME_OPTIONS, class KEY>
class ElGamalObjectImpl : public DL_ObjectImplBase<BASE, SCHEME_OPTIONS, KEY>, public ElGamalBase
{
public:
	unsigned int FixedMaxPlaintextLength() const {return MaxPlaintextLength(FixedCiphertextLength());}
	unsigned int FixedCiphertextLength() const {return CiphertextLength(0);}

	const DL_GroupParameters_GFP & GetGroupParameters() const {return GetKey().GetGroupParameters();}

	DecodingResult FixedLengthDecrypt(const byte *cipherText, byte *plainText) const
		{return Decrypt(cipherText, FixedCiphertextLength(), plainText);}

protected:
	const DL_KeyAgreementAlgorithm<Integer> & GetKeyAgreementAlgorithm() const {return *this;}
	const DL_KeyDerivationAlgorithm<Integer> & GetKeyDerivationAlgorithm() const {return *this;}
	const DL_SymmetricEncryptionAlgorithm & GetSymmetricEncryptionAlgorithm() const {return *this;}
};

struct ElGamalKeys
{
	typedef DL_CryptoKeys_GFP::GroupParameters GroupParameters;
	typedef DL_PrivateKey_GFP_OldFormat<DL_CryptoKeys_GFP::PrivateKey> PrivateKey;
	typedef DL_PublicKey_GFP_OldFormat<DL_CryptoKeys_GFP::PublicKey> PublicKey;
};

//! ElGamal encryption scheme with non-standard padding
struct ElGamal
{
	typedef DL_CryptoSchemeOptions<ElGamal, ElGamalKeys, int, int, int> SchemeOptions;

	static const char * StaticAlgorithmName() {return "ElgamalEnc/Crypto++Padding";}

	class EncryptorImpl : public ElGamalObjectImpl<DL_EncryptorBase<Integer, PK_FixedLengthEncryptor>,  SchemeOptions, SchemeOptions::PublicKey>, public PublicKeyCopier<SchemeOptions>
	{
	public:
		void CopyKeyInto(SchemeOptions::PublicKey &key) const
			{key = GetKey();}
	};

	class DecryptorImpl : public ElGamalObjectImpl<DL_DecryptorBase<Integer, PK_FixedLengthDecryptor>, SchemeOptions, SchemeOptions::PrivateKey>, public PrivateKeyCopier<SchemeOptions>
	{
	public:
		void CopyKeyInto(SchemeOptions::PublicKey &key) const
			{GetKey().MakePublicKey(key);}
		void CopyKeyInto(SchemeOptions::PrivateKey &key) const
			{key = GetKey();}
	};

	typedef SchemeOptions::GroupParameters GroupParameters;
	//! implements PK_Encryptor interface
	typedef PK_FinalTemplate<EncryptorImpl> Encryptor;
	//! implements PK_Decryptor interface
	typedef PK_FinalTemplate<DecryptorImpl> Decryptor;
};

typedef ElGamal::Encryptor ElGamalEncryptor;
typedef ElGamal::Decryptor ElGamalDecryptor;

NAMESPACE_END

#endif

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
九九热在线视频观看这里只有精品| 石原莉奈在线亚洲二区| 一区二区高清视频在线观看| 美洲天堂一区二卡三卡四卡视频| 成人激情校园春色| 精品国产sm最大网站| 亚洲制服丝袜在线| 成人手机电影网| 91精品国模一区二区三区| 亚洲欧美在线视频观看| 精品在线观看视频| 久久久久亚洲综合| 美日韩一级片在线观看| 久久青草欧美一区二区三区| 波多野结衣在线一区| 欧美大片在线观看一区二区| 手机精品视频在线观看| 精品欧美久久久| 日韩高清一级片| 欧美日韩精品系列| 夜夜精品视频一区二区 | 精品久久久久久久久久久院品网 | 亚洲成a人在线观看| 色综合久久综合网| 中文字幕亚洲欧美在线不卡| 91精品办公室少妇高潮对白| 亚洲人xxxx| 99re6这里只有精品视频在线观看| 国产三级精品三级| 成人一级黄色片| 亚洲bdsm女犯bdsm网站| 国产日韩精品一区二区三区在线| 欧美在线色视频| 日韩精品国产欧美| 国产农村妇女毛片精品久久麻豆| 欧美日韩高清一区二区| 国产伦理精品不卡| 国产女主播一区| 欧美群妇大交群的观看方式| 成人永久aaa| 久久丁香综合五月国产三级网站| 精品国产乱码久久久久久图片 | 久久久久国产一区二区三区四区| 欧美怡红院视频| 日韩在线一二三区| 国产精品理伦片| 欧美亚洲日本国产| 国产精品一区在线| 亚洲欧洲一区二区在线播放| 欧美一区二区女人| 国产精品一品视频| 亚洲444eee在线观看| 亚洲视频 欧洲视频| 欧美日韩大陆在线| 一本大道久久a久久精品综合| 久久成人av少妇免费| 日韩黄色小视频| 亚洲国产精品久久一线不卡| 欧美成人综合网站| 欧美精品vⅰdeose4hd| 国产在线观看一区二区| 天天综合日日夜夜精品| 久久精品在这里| 欧美日韩综合色| 国产一区二区三区在线看麻豆| 日韩精品电影在线观看| 亚洲一区二区三区四区在线| 亚洲精品乱码久久久久久久久 | 欧美优质美女网站| 91色|porny| 蜜桃一区二区三区四区| 亚洲1区2区3区视频| 亚洲图片自拍偷拍| 一区二区在线电影| 亚洲青青青在线视频| 亚洲色图欧美在线| 18欧美乱大交hd1984| 亚洲欧美偷拍卡通变态| 国产免费观看久久| 综合网在线视频| 成人欧美一区二区三区| 136国产福利精品导航| 综合久久久久综合| 亚洲视频香蕉人妖| 亚洲综合色视频| 香蕉影视欧美成人| 七七婷婷婷婷精品国产| 一区二区三区美女| 亚洲一级二级在线| 丝瓜av网站精品一区二区| 久久精品国产99| 国产福利一区二区| 国内精品国产成人| 秋霞午夜鲁丝一区二区老狼| 蜜桃av噜噜一区| 国产成人午夜视频| av电影在线观看一区| 91国偷自产一区二区使用方法| 色老头久久综合| 91麻豆精品国产91| 久久久www免费人成精品| 国产精品午夜春色av| 精品久久免费看| 国产精品视频第一区| 一区二区三区四区视频精品免费 | 久久久一区二区| 国产精品久久三| 天天色 色综合| 国产精品亚洲一区二区三区妖精 | 久久久久久久综合日本| 亚洲欧洲另类国产综合| 亚洲一级二级在线| 国产精品自产自拍| 91电影在线观看| 欧美不卡一区二区三区四区| 国产精品久久久久久户外露出| 午夜精品久久久久久久久久久 | 国产一区二区在线电影| 91老师片黄在线观看| 日韩一区二区免费视频| 777午夜精品免费视频| 久久综合久色欧美综合狠狠| 久久久国产精品麻豆| 亚洲欧美日韩国产手机在线| 免费人成在线不卡| 色综合色狠狠综合色| 精品国产一区a| 一区二区三区欧美视频| 国产精品亚洲午夜一区二区三区| 欧美日韩一级片网站| 亚洲国产精华液网站w| 中文字幕一区三区| 伦理电影国产精品| 欧美综合色免费| 亚洲国产精品成人综合| 蜜臀av一区二区三区| 欧洲亚洲国产日韩| 日本一区二区三区在线不卡| 免费欧美日韩国产三级电影| 色偷偷一区二区三区| 日本一区二区三区视频视频| 麻豆精品国产91久久久久久| 欧美日韩精品免费| 综合久久久久综合| 国产成人综合自拍| 日韩精品一区二区在线| 亚洲国产sm捆绑调教视频| 91蜜桃传媒精品久久久一区二区| 久久久精品国产免大香伊| 免费成人在线影院| 91精品在线观看入口| 亚洲成av人影院在线观看网| 色欧美88888久久久久久影院| 国产精品污www在线观看| 六月婷婷色综合| 日韩一区二区免费高清| 亚洲va中文字幕| 欧美在线免费播放| 亚洲自拍偷拍九九九| 在线免费观看不卡av| 亚洲黄色尤物视频| 色综合久久88色综合天天6| 亚洲欧洲成人精品av97| 国产99久久久国产精品| 欧美性色欧美a在线播放| 一区二区三区四区视频精品免费| 91麻豆免费看| 亚洲精品综合在线| 欧美在线色视频| 亚洲电影在线免费观看| 91.com视频| 秋霞电影网一区二区| 日韩精品影音先锋| 国内精品免费在线观看| 2024国产精品视频| 国产精品123| 国产精品三级在线观看| 成人免费看视频| 亚洲精品免费电影| 欧美日韩国产高清一区二区三区| 丝袜美腿高跟呻吟高潮一区| 91精品国产欧美一区二区18| 秋霞成人午夜伦在线观看| 精品国产一区二区三区久久久蜜月 | 欧美变态凌虐bdsm| 国产精品一二三在| 中文字幕一区二区不卡| 欧洲国内综合视频| 天天亚洲美女在线视频| 精品国产精品一区二区夜夜嗨| 国产宾馆实践打屁股91| 一区二区三区资源| 91精品国产综合久久福利| 国产乱码一区二区三区| 亚洲人成网站色在线观看| 欧美人牲a欧美精品| 久久99久久99| 中文字幕日韩av资源站| 欧美美女喷水视频| 国产精品一级黄|