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

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

?? mqv.h

?? 加密函數庫:包括多種加密解密算法,數字簽名,散列算法
?? H
字號:
#ifndef CRYPTOPP_MQV_H
#define CRYPTOPP_MQV_H

/** \file
*/

#include "gfpcrypt.h"

NAMESPACE_BEGIN(CryptoPP)

//! .
template <class GROUP_PARAMETERS, class COFACTOR_OPTION = CPP_TYPENAME GROUP_PARAMETERS::DefaultCofactorOption>
class MQV_Domain : public AuthenticatedKeyAgreementDomain
{
public:
	typedef GROUP_PARAMETERS GroupParameters;
	typedef typename GroupParameters::Element Element;
	typedef MQV_Domain<GROUP_PARAMETERS, COFACTOR_OPTION> Domain;

	MQV_Domain() {}

	MQV_Domain(const GroupParameters &params)
		: m_groupParameters(params) {}

	MQV_Domain(BufferedTransformation &bt)
		{m_groupParameters.BERDecode(bt);}

	template <class T1, class T2>
	MQV_Domain(T1 v1, T2 v2)
		{m_groupParameters.Initialize(v1, v2);}
	
	template <class T1, class T2, class T3>
	MQV_Domain(T1 v1, T2 v2, T3 v3)
		{m_groupParameters.Initialize(v1, v2, v3);}
	
	template <class T1, class T2, class T3, class T4>
	MQV_Domain(T1 v1, T2 v2, T3 v3, T4 v4)
		{m_groupParameters.Initialize(v1, v2, v3, v4);}

	const GroupParameters & GetGroupParameters() const {return m_groupParameters;}
	GroupParameters & AccessGroupParameters() {return m_groupParameters;}

	CryptoParameters & AccessCryptoParameters() {return AccessAbstractGroupParameters();}

	unsigned int AgreedValueLength() const {return GetAbstractGroupParameters().GetEncodedElementSize(false);}
	unsigned int StaticPrivateKeyLength() const {return GetAbstractGroupParameters().GetSubgroupOrder().ByteCount();}
	unsigned int StaticPublicKeyLength() const {return GetAbstractGroupParameters().GetEncodedElementSize(true);}

	void GenerateStaticPrivateKey(RandomNumberGenerator &rng, byte *privateKey) const
	{
		Integer x(rng, Integer::One(), GetAbstractGroupParameters().GetMaxExponent());
		x.Encode(privateKey, StaticPrivateKeyLength());
	}

	void GenerateStaticPublicKey(RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const
	{
		const DL_GroupParameters<Element> &params = GetAbstractGroupParameters();
		Integer x(privateKey, StaticPrivateKeyLength());
		Element y = params.ExponentiateBase(x);
		params.EncodeElement(true, y, publicKey);
	}

	unsigned int EphemeralPrivateKeyLength() const {return StaticPrivateKeyLength() + StaticPublicKeyLength();}
	unsigned int EphemeralPublicKeyLength() const {return StaticPublicKeyLength();}

	void GenerateEphemeralPrivateKey(RandomNumberGenerator &rng, byte *privateKey) const
	{
		const DL_GroupParameters<Element> &params = GetAbstractGroupParameters();
		Integer x(rng, Integer::One(), params.GetMaxExponent());
		x.Encode(privateKey, StaticPrivateKeyLength());
		Element y = params.ExponentiateBase(x);
		params.EncodeElement(true, y, privateKey+StaticPrivateKeyLength());
	}

	void GenerateEphemeralPublicKey(RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const
	{
		memcpy(publicKey, privateKey+StaticPrivateKeyLength(), EphemeralPublicKeyLength());
	}

	bool Agree(byte *agreedValue,
		const byte *staticPrivateKey, const byte *ephemeralPrivateKey, 
		const byte *staticOtherPublicKey, const byte *ephemeralOtherPublicKey,
		bool validateStaticOtherPublicKey=true) const
	{
		try
		{
			const DL_GroupParameters<Element> &params = GetAbstractGroupParameters();
			Element WW = params.DecodeElement(staticOtherPublicKey, validateStaticOtherPublicKey);
			Element VV = params.DecodeElement(ephemeralOtherPublicKey, true);

			Integer s(staticPrivateKey, StaticPrivateKeyLength());
			Integer u(ephemeralPrivateKey, StaticPrivateKeyLength());
			Element V = params.DecodeElement(ephemeralPrivateKey+StaticPrivateKeyLength(), false);

			const Integer &r = params.GetSubgroupOrder();
			Integer h2 = Integer::Power2((r.BitCount()+1)/2);
			Integer e = ((h2+params.ConvertElementToInteger(V)%h2)*s+u) % r;
			Integer tt = h2 + params.ConvertElementToInteger(VV) % h2;

			if (COFACTOR_OPTION::ToEnum() == NO_COFACTOR_MULTIPLICTION)
			{
				Element P = params.ExponentiateElement(WW, tt);
				P = m_groupParameters.MultiplyElements(P, VV);
				Element R[2];
				const Integer e2[2] = {r, e};
				params.SimultaneousExponentiate(R, P, e2, 2);
				if (!params.IsIdentity(R[0]) || params.IsIdentity(R[1]))
					return false;
				params.EncodeElement(false, R[1], agreedValue);
			}
			else
			{
				const Integer &k = params.GetCofactor();
				if (COFACTOR_OPTION::ToEnum() == COMPATIBLE_COFACTOR_MULTIPLICTION)
					e = ModularArithmetic(r).Divide(e, k);
				Element P = m_groupParameters.CascadeExponentiate(VV, k*e, WW, k*(e*tt%r));
				if (params.IsIdentity(P))
					return false;
				params.EncodeElement(false, P, agreedValue);
			}
		}
		catch (DL_BadElement &)
		{
			return false;
		}
		return true;
	}

private:
	DL_GroupParameters<Element> & AccessAbstractGroupParameters() {return m_groupParameters;}
	const DL_GroupParameters<Element> & GetAbstractGroupParameters() const {return m_groupParameters;}

	GroupParameters m_groupParameters;
};

//! Menezes-Qu-Vanstone in GF(p) with key validation, AKA <a href="http://www.weidai.com/scan-mirror/ka.html#MQV">MQV</a>
typedef MQV_Domain<DL_GroupParameters_GFP_DefaultSafePrime> MQV;

NAMESPACE_END

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区免费视频| 丝袜美腿亚洲色图| 亚洲国产欧美日韩另类综合| 蜜臀国产一区二区三区在线播放 | 久久久久久久久久电影| 樱花影视一区二区| 国产乱码字幕精品高清av | 奇米四色…亚洲| 成人性色生活片| 日韩西西人体444www| 一区二区免费在线播放| 成人亚洲一区二区一| 精品人伦一区二区色婷婷| 亚洲一区二区在线观看视频| 成人午夜又粗又硬又大| 精品免费视频.| 日韩国产高清影视| 欧美性猛片xxxx免费看久爱| 国产精品久久久一区麻豆最新章节| 久久久久久久久久久久久久久99| 精品国产一区二区精华| 亚洲一区二区三区国产| 91丨porny丨在线| 国产亚洲精品超碰| 国产在线精品一区二区| 日韩一区二区三区视频在线| 亚洲mv在线观看| 精品视频一区三区九区| 亚洲综合精品自拍| 91成人网在线| 一区二区三区四区亚洲| 日本道在线观看一区二区| 中文字幕一区二区三区色视频| 亚洲午夜av在线| 欧美伊人久久久久久午夜久久久久| 欧美一级日韩一级| 日韩激情av在线| 69久久99精品久久久久婷婷| 日韩电影免费在线看| 91精品国产综合久久福利| 日本不卡一区二区| 欧美精品 日韩| 久久电影网电视剧免费观看| 久久品道一品道久久精品| 国产露脸91国语对白| 国产精品视频yy9299一区| 色综合一区二区三区| 亚洲一二三区不卡| 日韩欧美综合在线| 国产精品一区在线观看乱码| 最新不卡av在线| 91精品福利视频| 日韩电影网1区2区| 欧美激情一区二区三区在线| 99精品欧美一区二区三区综合在线| 91精品国产综合久久福利| 六月丁香婷婷色狠狠久久| 国产性做久久久久久| 91网上在线视频| 日韩国产高清影视| 久久久久久久久久久久久夜| av在线免费不卡| 性久久久久久久久久久久| 久久久美女毛片| 日本高清不卡视频| 精品一区二区三区久久| 中文字幕中文字幕在线一区 | 日韩一区二区三区在线观看| 国产综合一区二区| 最近日韩中文字幕| 日韩丝袜情趣美女图片| 91在线一区二区三区| 久久99久久99小草精品免视看| 欧美久久久久久久久久| 国产精品一色哟哟哟| 亚洲欧美日韩国产成人精品影院| 成人av免费在线观看| 丝袜脚交一区二区| 国产视频一区二区三区在线观看| 精油按摩中文字幕久久| 国产精品毛片a∨一区二区三区| 国内成人精品2018免费看| 亚洲另类春色校园小说| www激情久久| 欧美色图在线观看| 国产成人在线视频网址| 亚洲电影视频在线| 亚洲女人****多毛耸耸8| 精品国产乱码久久久久久浪潮 | 成人18精品视频| 日韩成人精品在线| 一区二区三区四区在线免费观看| av亚洲产国偷v产偷v自拍| 久久99精品久久久久| 性欧美大战久久久久久久久| 亚洲精品视频一区| 中文无字幕一区二区三区| 欧美一级高清大全免费观看| 欧洲精品视频在线观看| 成人美女在线观看| 韩国成人精品a∨在线观看| 肉丝袜脚交视频一区二区| 亚洲免费观看高清完整版在线观看| 日本电影欧美片| 东方aⅴ免费观看久久av| 久久99国产精品麻豆| 蜜桃av一区二区| 日韩专区中文字幕一区二区| 亚洲mv在线观看| 婷婷成人激情在线网| 亚洲综合免费观看高清完整版在线 | 91精品国产综合久久蜜臀| 在线观看精品一区| 色婷婷激情一区二区三区| 色综合视频在线观看| 91网页版在线| 在线中文字幕一区| 欧美网站大全在线观看| 欧美日韩综合一区| 777a∨成人精品桃花网| 日韩一级完整毛片| 精品国产a毛片| 亚洲国产精品激情在线观看| 国产精品久久久久aaaa| 亚洲欧洲制服丝袜| 亚洲人妖av一区二区| 一区二区三区久久| 日韩精品一区第一页| 狂野欧美性猛交blacked| 国产在线播放一区| 成人免费毛片aaaaa**| 色呦呦国产精品| 欧美在线|欧美| 欧美一区2区视频在线观看| 亚洲精品一线二线三线| 中文字幕va一区二区三区| 亚洲欧美国产高清| 日韩高清在线不卡| 国产一区欧美一区| av不卡在线观看| 欧美人伦禁忌dvd放荡欲情| 久久亚洲精品国产精品紫薇| 亚洲欧洲精品一区二区精品久久久 | 久久精品欧美日韩| 中文字幕av资源一区| 一区二区三区蜜桃网| 九九国产精品视频| 99免费精品在线观看| 69堂精品视频| 国产精品蜜臀在线观看| 午夜精品福利一区二区蜜股av| 亚洲精品视频一区| 美女精品自拍一二三四| av在线这里只有精品| 欧美一级在线视频| 亚洲欧美日韩一区二区| 亚洲成av人影院| 国产精品综合在线视频| 欧洲一区在线观看| 国产亚洲成年网址在线观看| 日韩在线a电影| 97国产精品videossex| 日韩一级高清毛片| 亚洲精品成a人| 国产成人精品三级| 欧美一卡2卡三卡4卡5免费| 亚洲少妇最新在线视频| 精品无人码麻豆乱码1区2区| 欧美性猛交xxxxxx富婆| 国产精品久久久久影院老司| 久久国产欧美日韩精品| 在线中文字幕一区| 成人免费一区二区三区视频 | 欧美高清精品3d| 久久免费偷拍视频| 日本va欧美va欧美va精品| 色综合中文综合网| 91小视频在线免费看| 欧美精品一区二区三区蜜桃| 亚洲国产日日夜夜| 日本电影亚洲天堂一区| 1000部国产精品成人观看| 国产在线播精品第三| 日韩三级在线观看| 美女视频一区在线观看| 欧美日高清视频| 午夜欧美在线一二页| 在线观看日产精品| 一区二区三区美女| 91行情网站电视在线观看高清版| 欧美三级电影网站| 一区二区三区四区在线| 日本电影欧美片| 亚洲美女区一区| 一本久久a久久精品亚洲| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 日韩精品中文字幕在线不卡尤物 | 91蝌蚪国产九色| 日本一区二区三区四区在线视频 | 国产欧美精品一区|