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

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

?? xtr.h

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

/** \file
	"The XTR public key system" by Arjen K. Lenstra and Eric R. Verheul
*/

#include "modarith.h"

NAMESPACE_BEGIN(CryptoPP)

//! an element of GF(p^2)
class GFP2Element
{
public:
	GFP2Element() {}
	GFP2Element(const Integer &c1, const Integer &c2) : c1(c1), c2(c2) {}
	GFP2Element(const byte *encodedElement, unsigned int size)
		: c1(encodedElement, size/2), c2(encodedElement+size/2, size/2) {}

	void Encode(byte *encodedElement, unsigned int size)
	{
		c1.Encode(encodedElement, size/2);
		c2.Encode(encodedElement+size/2, size/2);
	}

	bool operator==(const GFP2Element &rhs)	const {return c1 == rhs.c1 && c2 == rhs.c2;}
	bool operator!=(const GFP2Element &rhs) const {return !operator==(rhs);}

	void swap(GFP2Element &a)
	{
		c1.swap(a.c1);
		c2.swap(a.c2);
	}

	static GFP2Element & Zero();

	Integer c1, c2;
};

//! GF(p^2), optimal normal basis
template <class F>
class GFP2_ONB : public AbstractRing<GFP2Element>
{
public:
	typedef F BaseField;

	GFP2_ONB(const Integer &p) : modp(p)
	{
		if (p%3 != 2)
			throw InvalidArgument("GFP2_ONB: modulus must be equivalent to 2 mod 3");
	}

	const Integer& GetModulus() const {return modp.GetModulus();}

	GFP2Element ConvertIn(const Integer &a) const
	{
		t = modp.Inverse(modp.ConvertIn(a));
		return GFP2Element(t, t);
	}

	GFP2Element ConvertIn(const GFP2Element &a) const
		{return GFP2Element(modp.ConvertIn(a.c1), modp.ConvertIn(a.c2));}

	GFP2Element ConvertOut(const GFP2Element &a) const
		{return GFP2Element(modp.ConvertOut(a.c1), modp.ConvertOut(a.c2));}

	bool Equal(const GFP2Element &a, const GFP2Element &b) const
	{
		return modp.Equal(a.c1, b.c1) && modp.Equal(a.c2, b.c2);
	}

	const Element& Identity() const
	{
		return GFP2Element::Zero();
	}

	const Element& Add(const Element &a, const Element &b) const
	{
		result.c1 = modp.Add(a.c1, b.c1);
		result.c2 = modp.Add(a.c2, b.c2);
		return result;
	}

	const Element& Inverse(const Element &a) const
	{
		result.c1 = modp.Inverse(a.c1);
		result.c2 = modp.Inverse(a.c2);
		return result;
	}

	const Element& Double(const Element &a) const
	{
		result.c1 = modp.Double(a.c1);
		result.c2 = modp.Double(a.c2);
		return result;
	}

	const Element& Subtract(const Element &a, const Element &b) const
	{
		result.c1 = modp.Subtract(a.c1, b.c1);
		result.c2 = modp.Subtract(a.c2, b.c2);
		return result;
	}

	Element& Accumulate(Element &a, const Element &b) const
	{
		modp.Accumulate(a.c1, b.c1);
		modp.Accumulate(a.c2, b.c2);
		return a;
	}

	Element& Reduce(Element &a, const Element &b) const
	{
		modp.Reduce(a.c1, b.c1);
		modp.Reduce(a.c2, b.c2);
		return a;
	}

	bool IsUnit(const Element &a) const
	{
		return a.c1.NotZero() || a.c2.NotZero();
	}

	const Element& MultiplicativeIdentity() const
	{
		result.c1 = result.c2 = modp.Inverse(modp.MultiplicativeIdentity());
		return result;
	}

	const Element& Multiply(const Element &a, const Element &b) const
	{
		t = modp.Add(a.c1, a.c2);
		t = modp.Multiply(t, modp.Add(b.c1, b.c2));
		result.c1 = modp.Multiply(a.c1, b.c1);
		result.c2 = modp.Multiply(a.c2, b.c2);
		result.c1.swap(result.c2);
		modp.Reduce(t, result.c1);
		modp.Reduce(t, result.c2);
		modp.Reduce(result.c1, t);
		modp.Reduce(result.c2, t);
		return result;
	}

	const Element& MultiplicativeInverse(const Element &a) const
	{
		return result = Exponentiate(a, modp.GetModulus()-2);
	}

	const Element& Square(const Element &a) const
	{
		const Integer &ac1 = (&a == &result) ? (t = a.c1) : a.c1;
		result.c1 = modp.Multiply(modp.Subtract(modp.Subtract(a.c2, a.c1), a.c1), a.c2);
		result.c2 = modp.Multiply(modp.Subtract(modp.Subtract(ac1, a.c2), a.c2), ac1);
		return result;
	}

	Element Exponentiate(const Element &a, const Integer &e) const
	{
		Integer edivp, emodp;
		Integer::Divide(emodp, edivp, e, modp.GetModulus());
		Element b = PthPower(a);
		return AbstractRing<GFP2Element>::CascadeExponentiate(a, emodp, b, edivp);
	}

	const Element & PthPower(const Element &a) const
	{
		result = a;
		result.c1.swap(result.c2);
		return result;
	}

	void RaiseToPthPower(Element &a) const
	{
		a.c1.swap(a.c2);
	}

	// a^2 - 2a^p
	const Element & SpecialOperation1(const Element &a) const
	{
		assert(&a != &result);
		result = Square(a);
		modp.Reduce(result.c1, a.c2);
		modp.Reduce(result.c1, a.c2);
		modp.Reduce(result.c2, a.c1);
		modp.Reduce(result.c2, a.c1);
		return result;
	}

	// x * z - y * z^p
	const Element & SpecialOperation2(const Element &x, const Element &y, const Element &z) const
	{
		assert(&x != &result && &y != &result && &z != &result);
		t = modp.Add(x.c2, y.c2);
		result.c1 = modp.Multiply(z.c1, modp.Subtract(y.c1, t));
		modp.Accumulate(result.c1, modp.Multiply(z.c2, modp.Subtract(t, x.c1)));
		t = modp.Add(x.c1, y.c1);
		result.c2 = modp.Multiply(z.c2, modp.Subtract(y.c2, t));
		modp.Accumulate(result.c2, modp.Multiply(z.c1, modp.Subtract(t, x.c2)));
		return result;
	}

protected:
	BaseField modp;
	mutable GFP2Element result;
	mutable Integer t;
};

void XTR_FindPrimesAndGenerator(RandomNumberGenerator &rng, Integer &p, Integer &q, GFP2Element &g, unsigned int pbits, unsigned int qbits);

GFP2Element XTR_Exponentiate(const GFP2Element &b, const Integer &e, const Integer &p);

NAMESPACE_END

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品粉嫩aⅴ一区二区三区四区| 日韩欧美国产不卡| 老司机免费视频一区二区三区| 亚洲精品成人少妇| 成人免费在线视频| 国产精品国产a| 国产精品午夜在线| 亚洲欧洲三级电影| 最新国产成人在线观看| 亚洲视频中文字幕| 亚洲老司机在线| 一区二区三区在线观看网站| 亚洲美腿欧美偷拍| 亚洲国产一区二区三区青草影视| 亚洲精品视频在线看| 一区二区三区在线免费播放| 亚洲一二三四区| 丝袜诱惑亚洲看片| 美女一区二区三区在线观看| 久久 天天综合| 国产不卡视频一区| 一本到高清视频免费精品| 91久久精品午夜一区二区| 欧美日韩国产123区| 欧美一卡在线观看| 国产日本一区二区| 一二三区精品视频| 免费人成在线不卡| 懂色av一区二区三区免费看| 91免费版pro下载短视频| 欧美日韩在线播放三区四区| 日韩欧美一二三区| 日本一区二区不卡视频| 亚洲一区二区三区影院| 日本成人在线视频网站| 国产大陆a不卡| 色综合中文综合网| 久久久久青草大香线综合精品| 国产女主播在线一区二区| 亚洲欧美另类久久久精品| 麻豆专区一区二区三区四区五区| 国产高清久久久| 欧美精品丝袜久久久中文字幕| 久久网站最新地址| 亚洲欧美日韩在线播放| 激情五月婷婷综合网| 色呦呦国产精品| 欧美成人官网二区| 一区二区三区在线视频免费 | 欧美一区二区三区爱爱| 国产精品乱人伦一区二区| 日本特黄久久久高潮| 91亚洲国产成人精品一区二区三| 91精品国产一区二区三区蜜臀| 国产精品久久毛片| 久久av资源网| 欧美日韩国产精品成人| 中文字幕亚洲精品在线观看 | 狠狠色丁香婷婷综合久久片| 欧美在线|欧美| 国产精品灌醉下药二区| 极品少妇xxxx精品少妇偷拍| 欧美日本一区二区三区四区| 日韩一区欧美一区| 国产成人在线网站| 欧美电影免费提供在线观看| 亚洲小说春色综合另类电影| 97se狠狠狠综合亚洲狠狠| 日本一区二区动态图| 国产精品一区二区久久精品爱涩| 日韩一级片网址| 天天av天天翘天天综合网色鬼国产| 色哟哟一区二区在线观看| 中文字幕制服丝袜一区二区三区| 国产精品一区久久久久| 精品国产三级a在线观看| 蜜桃视频在线观看一区| 欧美一三区三区四区免费在线看 | 日韩一级片在线观看| 日本人妖一区二区| 欧美久久久一区| 日日摸夜夜添夜夜添亚洲女人| 欧美亚洲尤物久久| 亚洲一区二区在线观看视频| 欧美视频三区在线播放| 婷婷激情综合网| 7878成人国产在线观看| 欧美aaaaaa午夜精品| 精品欧美久久久| 精品在线观看视频| 日本一区二区视频在线| 波波电影院一区二区三区| 国产精品久久久久aaaa| 色综合久久久久久久久| 午夜伊人狠狠久久| 91精品国产乱| 激情久久五月天| 久久亚洲综合av| 成人福利视频在线看| 一区二区三区在线观看国产| 欧美人妇做爰xxxⅹ性高电影 | wwww国产精品欧美| 成人av网址在线观看| 一区二区三区在线观看欧美| 欧美精选在线播放| 久久国内精品自在自线400部| 国产日产欧产精品推荐色| av日韩在线网站| 一区二区三区四区蜜桃| 91麻豆精品国产综合久久久久久 | 久久久精品蜜桃| 91免费看`日韩一区二区| 亚洲gay无套男同| 亚洲精品一区二区三区福利| 成人免费高清视频在线观看| 亚洲国产欧美在线| 久久欧美中文字幕| 91香蕉视频在线| 久久国产婷婷国产香蕉| 日韩美女久久久| 欧美xfplay| 在线视频欧美区| 国产精品小仙女| 视频一区二区不卡| 中文字幕欧美日韩一区| 欧美日韩国产经典色站一区二区三区| 国产乱淫av一区二区三区| 亚洲午夜精品一区二区三区他趣| 精品sm捆绑视频| 欧美一区二区三区思思人| 丁香亚洲综合激情啪啪综合| 青青草国产精品97视觉盛宴| 亚洲日穴在线视频| 久久九九久精品国产免费直播| 色悠久久久久综合欧美99| 国产精品系列在线观看| 全国精品久久少妇| 亚洲自拍偷拍网站| 国产网红主播福利一区二区| 欧美一级精品在线| 欧美丝袜第三区| 色婷婷av一区二区三区大白胸| 国产成人av自拍| 国产成人免费视频网站高清观看视频| 日韩高清一级片| 午夜久久久久久久久久一区二区| 中文字幕一区二区三中文字幕| 国产片一区二区三区| 精品国产区一区| 欧美精品一区二区三区视频| 欧美一区二区精美| 欧美精品日日鲁夜夜添| 欧美性色黄大片| 欧美午夜电影在线播放| 色婷婷一区二区| 欧美亚洲禁片免费| 欧美日韩精品一区二区在线播放| 91福利视频网站| 欧美日韩在线免费视频| 欧美老女人在线| 日韩一区二区免费视频| 久久精品一区八戒影视| 国产欧美视频一区二区三区| 久久婷婷色综合| 国产亚洲美州欧州综合国| 国产色婷婷亚洲99精品小说| 久久视频一区二区| 中文字幕欧美三区| 中文字幕亚洲欧美在线不卡| 成人免费小视频| 亚洲精品videosex极品| 午夜精品福利一区二区三区蜜桃| 亚洲成人第一页| 青青草国产成人99久久| 国产剧情一区二区三区| 成人免费看黄yyy456| 色婷婷综合久久久久中文一区二区| 日本道色综合久久| 欧美日韩午夜在线视频| 日韩亚洲欧美成人一区| 精品伦理精品一区| 中文字幕欧美区| 亚洲一区二区综合| 久久成人免费日本黄色| 成人黄色777网| 欧美视频你懂的| 久久亚洲二区三区| 亚洲视频免费观看| 日韩精品成人一区二区在线| 精品亚洲国产成人av制服丝袜| 国产成人在线看| 欧美日韩国产美| 国产午夜精品一区二区三区视频| 亚洲精品视频自拍| 精品无人区卡一卡二卡三乱码免费卡| 成人黄色免费短视频| 欧美电影影音先锋| 日本一区二区成人在线| 日韩国产精品大片| 色哟哟一区二区三区|