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

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

?? gfpcrypt.cpp

?? 此文件是實(shí)現(xiàn)加解密算法的函數(shù)庫(kù)
?? CPP
字號(hào):
// dsa.cpp - written and placed in the public domain by Wei Dai

#include "pch.h"
#include "gfpcrypt.h"
#include "asn.h"
#include "oids.h"
#include "nbtheory.h"

NAMESPACE_BEGIN(CryptoPP)

void TestInstantiations_gfpcrypt()
{
	GDSA<SHA>::Signer test;
	GDSA<SHA>::Verifier test1;
	DSA::Signer test5(NullRNG(), 100);
	DSA::Signer test2(test5);
	NR<SHA>::Signer test3;
	NR<SHA>::Verifier test4;
	DLIES<>::Encryptor test6;
	DLIES<>::Decryptor test7;
}

void DL_GroupParameters_DSA::GenerateRandom(RandomNumberGenerator &rng, const NameValuePairs &alg)
{
	Integer p, q, g;

	if (alg.GetValue("Modulus", p) && alg.GetValue("SubgroupGenerator", g))
	{
		q = alg.GetValueWithDefault("SubgroupOrder", ComputeGroupOrder(p)/2);
	}
	else
	{
		int modulusSize = 1024;
		alg.GetIntValue("ModulusSize", modulusSize) || alg.GetIntValue("KeySize", modulusSize);

		if (!DSA::IsValidPrimeLength(modulusSize))
			throw InvalidArgument("DSA: not a valid prime length");

		SecByteBlock seed(SHA::DIGESTSIZE);
		Integer h;
		int c;

		do
		{
			rng.GenerateBlock(seed, SHA::DIGESTSIZE);
		} while (!DSA::GeneratePrimes(seed, SHA::DIGESTSIZE*8, c, p, modulusSize, q));

		do
		{
			h.Randomize(rng, 2, p-2);
			g = a_exp_b_mod_c(h, (p-1)/q, p);
		} while (g <= 1);
	}

	Initialize(p, q, g);
}

bool DL_GroupParameters_DSA::ValidateGroup(RandomNumberGenerator &rng, unsigned int level) const
{
	bool pass = DL_GroupParameters_GFP::ValidateGroup(rng, level);
	pass = pass && DSA::IsValidPrimeLength(GetModulus().BitCount());
	pass = pass && GetSubgroupOrder().BitCount() == 160;
	return pass;
}

Integer NR_EncodeDigest(unsigned int modulusBits, const byte *digest, unsigned int digestLen)
{
	Integer h;
	if (digestLen*8 < modulusBits)
		h.Decode(digest, digestLen);
	else
	{
		h.Decode(digest, BitsToBytes(modulusBits));
		h >>= BitsToBytes(modulusBits)*8 - modulusBits + 1;
	}
	return h;
}

Integer DSA_EncodeDigest(unsigned int modulusBits, const byte *digest, unsigned int digestLen)
{
	Integer h;
	if (digestLen*8 <= modulusBits)
		h.Decode(digest, digestLen);
	else
	{
		h.Decode(digest, BitsToBytes(modulusBits));
		h >>= BitsToBytes(modulusBits)*8 - modulusBits;
	}
	return h;
}

bool DL_GroupParameters_IntegerBased::ValidateGroup(RandomNumberGenerator &rng, unsigned int level) const
{
	const Integer &p = GetModulus(), &q = GetSubgroupOrder();

	bool pass = true;
	pass = pass && p > Integer::One() && p.IsOdd();
	pass = pass && q > Integer::One() && q.IsOdd();

	if (level >= 1)
		pass = pass && GetCofactor() > Integer::One() && GetGroupOrder() % q == Integer::Zero();
	if (level >= 2)
		pass = pass && VerifyPrime(rng, q, level-2) && VerifyPrime(rng, p, level-2);

	return pass;
}

bool DL_GroupParameters_IntegerBased::ValidateElement(unsigned int level, const Integer &g, const DL_FixedBasePrecomputation<Integer> *gpc) const
{
	const Integer &p = GetModulus(), &q = GetSubgroupOrder();

	bool pass = true;
	pass = pass && GetFieldType() == 1 ? g.IsPositive() : g.NotNegative();
	pass = pass && g < p && !IsIdentity(g);

	if (level >= 1)
	{
		if (gpc)
			pass = pass && gpc->Exponentiate(GetGroupPrecomputation(), Integer::One()) == g;
	}
	if (level >= 2)
	{
		if (GetFieldType() == 2)
			pass = pass && Jacobi(g*g-4, p)==-1;

		// verifying that Lucas((p+1)/2, w, p)==2 is omitted because it's too costly
		// and at most 1 bit is leaked if it's false
		bool fullValidate = (GetFieldType() == 2 && level >= 3) || !FastSubgroupCheckAvailable();

		if (fullValidate)
			pass = pass && IsIdentity(gpc ? gpc->Exponentiate(GetGroupPrecomputation(), q) : ExponentiateElement(g, q));
		else if (GetFieldType() == 1)
			pass = pass && Jacobi(g, p) == 1;
	}

	return pass;
}

void DL_GroupParameters_IntegerBased::GenerateRandom(RandomNumberGenerator &rng, const NameValuePairs &alg)
{
	Integer p, q, g;
	
	if (alg.GetValue("Modulus", p) && alg.GetValue("SubgroupGenerator", g))
	{
		q = alg.GetValueWithDefault("SubgroupOrder", ComputeGroupOrder(p)/2);
	}
	else
	{
		int modulusSize, subgroupOrderSize;

		if (!alg.GetIntValue("ModulusSize", modulusSize))
			modulusSize = alg.GetIntValueWithDefault("KeySize", 2048);

		if (!alg.GetIntValue("SubgroupOrderSize", subgroupOrderSize))
			subgroupOrderSize = GetDefaultSubgroupOrderSize(modulusSize);

		PrimeAndGenerator pg;
		pg.Generate(GetFieldType() == 1 ? 1 : -1, rng, modulusSize, subgroupOrderSize);
		p = pg.Prime();
		q = pg.SubPrime();
		g = pg.Generator();
	}

	Initialize(p, q, g);
}

Integer DL_GroupParameters_IntegerBased::DecodeElement(const byte *encoded, bool checkForGroupMembership) const
{
	Integer g(encoded, GetModulus().ByteCount());
	if (!ValidateElement(1, g, NULL))
		throw DL_BadElement();
	return g;
}

void DL_GroupParameters_IntegerBased::BERDecode(BufferedTransformation &bt)
{
	BERSequenceDecoder parameters(bt);
		Integer p(parameters);
		Integer q(parameters);
		Integer g;
		if (parameters.EndReached())
		{
			g = q;
			q = ComputeGroupOrder(p) / 2;
		}
		else
			g.BERDecode(parameters);
	parameters.MessageEnd();

	SetModulusAndSubgroupGenerator(p, g);
	SetSubgroupOrder(q);
}

void DL_GroupParameters_IntegerBased::DEREncode(BufferedTransformation &bt) const
{
	DERSequenceEncoder parameters(bt);
		GetModulus().DEREncode(parameters);
		m_q.DEREncode(parameters);
		GetSubgroupGenerator().DEREncode(parameters);
	parameters.MessageEnd();
}

bool DL_GroupParameters_IntegerBased::GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const
{
	return GetValueHelper<DL_GroupParameters<Element> >(this, name, valueType, pValue)
		CRYPTOPP_GET_FUNCTION_ENTRY(Modulus);
}

void DL_GroupParameters_IntegerBased::AssignFrom(const NameValuePairs &source)
{
	AssignFromHelper(this, source)
		CRYPTOPP_SET_FUNCTION_ENTRY2(Modulus, SubgroupGenerator)
		CRYPTOPP_SET_FUNCTION_ENTRY(SubgroupOrder)
		;
}

OID DL_GroupParameters_IntegerBased::GetAlgorithmID() const
{
	return ASN1::id_dsa();
}

void DL_GroupParameters_GFP::SimultaneousExponentiate(Element *results, const Element &base, const Integer *exponents, unsigned int exponentsCount) const
{
	ModularArithmetic ma(GetModulus());
	ma.SimultaneousExponentiate(results, base, exponents, exponentsCount);
}

DL_GroupParameters_GFP::Element DL_GroupParameters_GFP::MultiplyElements(const Element &a, const Element &b) const
{
	return a_times_b_mod_c(a, b, GetModulus());
}

DL_GroupParameters_GFP::Element DL_GroupParameters_GFP::CascadeExponentiate(const Element &element1, const Integer &exponent1, const Element &element2, const Integer &exponent2) const
{
	ModularArithmetic ma(GetModulus());
	return ma.CascadeExponentiate(element1, exponent1, element2, exponent2);
}

Integer DL_GroupParameters_IntegerBased::GetMaxExponent() const
{
	return STDMIN(GetSubgroupOrder()-1, Integer::Power2(2*DiscreteLogWorkFactor(GetFieldType()*GetModulus().BitCount())));
}

unsigned int DL_GroupParameters_IntegerBased::GetDefaultSubgroupOrderSize(unsigned int modulusSize) const
{
	return 2*DiscreteLogWorkFactor(GetFieldType()*modulusSize);
}

NAMESPACE_END

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一二在线观看| 一区二区三区欧美久久| 亚洲自拍偷拍九九九| 成人自拍视频在线| 久久久久久97三级| 国产一区二三区| 欧美mv日韩mv亚洲| 久久疯狂做爰流白浆xx| 精品国产乱码久久久久久久| 九一久久久久久| 久久先锋影音av| 国产成人在线网站| 中文字幕欧美一| 99精品国产99久久久久久白柏| 中文字幕巨乱亚洲| 色又黄又爽网站www久久| 亚洲欧美日韩在线| 欧美日韩一区二区三区四区| 亚洲第一电影网| 欧美另类久久久品| 精品制服美女久久| 亚洲成a人片在线不卡一二三区 | 高清不卡在线观看| 1区2区3区精品视频| 26uuu国产在线精品一区二区| 欧美日韩精品久久久| 韩国精品主播一区二区在线观看| 国产精品久久久久久久午夜片| 日本韩国欧美三级| 日韩国产欧美在线观看| 日韩精品一区二区三区中文不卡| 国产·精品毛片| 韩国精品在线观看| 老司机精品视频导航| 天堂av在线一区| 欧美高清在线一区二区| 久久亚洲精品国产精品紫薇| 欧美一二三四在线| 欧美一级夜夜爽| 国产成人免费在线视频| 精品制服美女丁香| 激情综合网天天干| 精品一区二区三区在线播放视频| 免费久久99精品国产| 中文字幕中文字幕中文字幕亚洲无线| 精品国产123| 久久久一区二区| 久久精品水蜜桃av综合天堂| 欧美色视频在线观看| 欧美日韩亚洲综合一区| 欧美精品在线视频| 欧美一区二区三区视频免费播放| 欧美精品精品一区| 宅男在线国产精品| 色综合久久综合中文综合网| 91浏览器入口在线观看| 国产伦精品一区二区三区免费| 国产呦萝稀缺另类资源| 国产麻豆日韩欧美久久| 国产成人av影院| 成人激情动漫在线观看| 久久se这里有精品| 国产精品亚洲视频| 日韩国产欧美在线观看| 麻豆freexxxx性91精品| 亚洲国产视频网站| 最新久久zyz资源站| 日韩欧美高清dvd碟片| 欧美成人vps| 国产精品―色哟哟| 精品国产乱码久久久久久久| 国产欧美日韩三区| 久久久久国产精品人| 国产精品嫩草影院com| 亚洲一区二区三区四区在线| 日日夜夜免费精品| 国产在线不卡视频| 91蜜桃传媒精品久久久一区二区| 欧美性高清videossexo| 欧美综合亚洲图片综合区| 91在线视频播放地址| 欧美日韩高清一区二区不卡| 精品国产乱码久久久久久久| 亚洲欧洲精品一区二区三区不卡| 亚洲电影你懂得| 国产精品一二三四区| 在线这里只有精品| 精品国产一区久久| 亚洲欧美一区二区三区久本道91| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品91xxx| 欧美在线免费观看视频| 欧美精品一区二区三区很污很色的 | 亚洲综合无码一区二区| 日本aⅴ免费视频一区二区三区| 粉嫩av一区二区三区在线播放 | 奇米色一区二区| 成人午夜在线视频| 欧美一二三在线| 亚洲欧美激情插| 国产一区 二区| 欧美日韩国产电影| 国产精品对白交换视频| 美女网站一区二区| 欧洲精品一区二区| 国产精品美女久久久久久久久 | 国产婷婷精品av在线| 午夜视频久久久久久| 日本三级亚洲精品| 色综合中文字幕国产| 99久久精品免费看国产免费软件| 欧美福利一区二区| 亚洲青青青在线视频| 夫妻av一区二区| 精品久久久三级丝袜| 亚洲成人高清在线| 色一区在线观看| 欧美韩国日本一区| 狠狠久久亚洲欧美| 日韩一区二区精品在线观看| 亚洲精品久久久久久国产精华液| 五月综合激情日本mⅴ| 99久久精品免费| 国产欧美日韩视频一区二区| 久久99九九99精品| 欧美精品xxxxbbbb| 亚洲国产精品麻豆| 欧美性猛交xxxxxxxx| 亚洲三级理论片| bt7086福利一区国产| 在线播放中文一区| 亚洲成人在线免费| 在线观看一区日韩| 亚洲精品国产无天堂网2021| 91在线观看地址| 中文字幕在线不卡| 99在线视频精品| 国产精品福利一区| caoporm超碰国产精品| 国产精品久久久久久久久久久免费看 | 亚洲另类在线一区| 一本久久精品一区二区| 亚洲欧洲国产日韩| 99精品一区二区三区| 国产精品久久看| 99v久久综合狠狠综合久久| 亚洲欧洲国产日本综合| 91免费在线播放| 一区二区三区在线高清| 在线观看成人小视频| 午夜精品福利一区二区三区av| 欧美日韩你懂得| 免费成人在线观看| 久久网站最新地址| 成人免费视频视频| 亚洲视频在线一区| 欧美日韩国产首页| 美国一区二区三区在线播放| 精品日产卡一卡二卡麻豆| 国产精品综合在线视频| 国产精品成人免费精品自在线观看| 99久久婷婷国产综合精品电影| 亚洲精品乱码久久久久久日本蜜臀| 色94色欧美sute亚洲13| 午夜精品免费在线观看| 精品日本一线二线三线不卡| 国产成人亚洲综合色影视| 亚洲色图丝袜美腿| 91超碰这里只有精品国产| 激情欧美日韩一区二区| 1000精品久久久久久久久| 欧美日韩一区二区三区免费看| 裸体在线国模精品偷拍| 欧美国产日本韩| 欧美在线免费视屏| 韩国视频一区二区| 亚洲三级在线免费| 日韩一级二级三级| 99久久综合国产精品| 偷拍日韩校园综合在线| 久久久综合网站| 91黄视频在线观看| 九一九一国产精品| 亚洲精品成人少妇| 精品盗摄一区二区三区| 99精品偷自拍| 久久99国产精品久久99| 亚洲女同一区二区| 欧美tickle裸体挠脚心vk| 色综合久久久久综合体桃花网| 日本一区中文字幕| 成人欧美一区二区三区黑人麻豆 | 欧美日韩精品欧美日韩精品一| 国产综合色精品一区二区三区| 亚洲人精品午夜| 精品久久久久久久人人人人传媒 | 国产一区二区三区日韩| 亚洲国产综合色| 中文字幕乱码亚洲精品一区| 欧美高清dvd|