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

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

?? esign.cpp

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

#include "pch.h"
#include "esign.h"
#include "asn.h"
#include "modarith.h"
#include "nbtheory.h"
#include "sha.h"
#include "algparam.h"

NAMESPACE_BEGIN(CryptoPP)

void ESIGN_TestInstantiations()
{
	ESIGN<SHA>::Verifier x1(1, 1);
	ESIGN<SHA>::Signer x2(NullRNG(), 1);
	ESIGN<SHA>::Verifier x3(x2);
	ESIGN<SHA>::Verifier x4(x2.GetKey());
	ESIGN<SHA>::Verifier x5(x3);
	ESIGN<SHA>::Signer x6 = x2;

	x6 = x2;
	x3 = ESIGN<SHA>::Verifier(x2);
	x4 = x2.GetKey();
}

void ESIGNFunction::BERDecode(BufferedTransformation &bt)
{
	BERSequenceDecoder seq(bt);
		m_n.BERDecode(seq);
		m_e.BERDecode(seq);
	seq.MessageEnd();
}

void ESIGNFunction::DEREncode(BufferedTransformation &bt) const
{
	DERSequenceEncoder seq(bt);
		m_n.DEREncode(seq);
		m_e.DEREncode(seq);
	seq.MessageEnd();
}

Integer ESIGNFunction::ApplyFunction(const Integer &x) const
{
	DoQuickSanityCheck();
	return STDMIN(a_exp_b_mod_c(x, m_e, m_n) >> (2*GetK()+2), MaxImage());
}

bool ESIGNFunction::Validate(RandomNumberGenerator &rng, unsigned int level) const
{
	bool pass = true;
	pass = pass && m_n > Integer::One() && m_n.IsOdd();
	pass = pass && m_e >= 8 && m_e < m_n;
	return pass;
}

bool ESIGNFunction::GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const
{
	return GetValueHelper(this, name, valueType, pValue).Assignable()
		CRYPTOPP_GET_FUNCTION_ENTRY(Modulus)
		CRYPTOPP_GET_FUNCTION_ENTRY(PublicExponent)
		;
}

void ESIGNFunction::AssignFrom(const NameValuePairs &source)
{
	AssignFromHelper(this, source)
		CRYPTOPP_SET_FUNCTION_ENTRY(Modulus)
		CRYPTOPP_SET_FUNCTION_ENTRY(PublicExponent)
		;
}

// *****************************************************************************

void InvertibleESIGNFunction::GenerateRandom(RandomNumberGenerator &rng, const NameValuePairs &param)
{
	int modulusSize = 1023*2;
	param.GetIntValue("ModulusSize", modulusSize) || param.GetIntValue("KeySize", modulusSize);

	if (modulusSize < 24)
		throw InvalidArgument("InvertibleESIGNFunction: specified modulus size is too small");

	if (modulusSize % 3 != 0)
		throw InvalidArgument("InvertibleESIGNFunction: modulus size must be divisible by 3");

	m_e = param.GetValueWithDefault("PublicExponent", Integer(32));

	if (m_e < 8)
		throw InvalidArgument("InvertibleESIGNFunction: public exponents less than 8 may not be secure");

	// VC70 workaround: putting these after primeParam causes overlapped stack allocation
	ConstByteArrayParameter seedParam;
	SecByteBlock seed;

	const Integer minP = Integer(204) << (modulusSize/3-8);
	const Integer maxP = Integer::Power2(modulusSize/3)-1;
	const NameValuePairs &primeParam = MakeParameters("Min", minP)("Max", maxP)("RandomNumberType", Integer::PRIME);

	if (param.GetValue("Seed", seedParam))
	{
		seed.resize(seedParam.size() + 4);
		memcpy(seed + 4, seedParam.begin(), seedParam.size());

		UnalignedPutWord(BIG_ENDIAN_ORDER, seed, (word32)0);
		m_p.GenerateRandom(rng, CombinedNameValuePairs(primeParam, MakeParameters("Seed", ConstByteArrayParameter(seed))));
		UnalignedPutWord(BIG_ENDIAN_ORDER, seed, (word32)1);
		m_q.GenerateRandom(rng, CombinedNameValuePairs(primeParam, MakeParameters("Seed", ConstByteArrayParameter(seed))));
	}
	else
	{
		m_p.GenerateRandom(rng, primeParam);
		m_q.GenerateRandom(rng, primeParam);
	}

	m_n = m_p * m_p * m_q;

	assert(m_n.BitCount() == modulusSize);
}

void InvertibleESIGNFunction::BERDecode(BufferedTransformation &bt)
{
	BERSequenceDecoder privateKey(bt);
		m_n.BERDecode(privateKey);
		m_e.BERDecode(privateKey);
		m_p.BERDecode(privateKey);
		m_q.BERDecode(privateKey);
	privateKey.MessageEnd();
}

void InvertibleESIGNFunction::DEREncode(BufferedTransformation &bt) const
{
	DERSequenceEncoder privateKey(bt);
		m_n.DEREncode(privateKey);
		m_e.DEREncode(privateKey);
		m_p.DEREncode(privateKey);
		m_q.DEREncode(privateKey);
	privateKey.MessageEnd();
}

Integer InvertibleESIGNFunction::CalculateRandomizedInverse(RandomNumberGenerator &rng, const Integer &x) const 
{
	DoQuickSanityCheck();

	Integer pq = m_p * m_q;
	Integer p2 = m_p * m_p;
	Integer r, z, re, a, w0, w1;

	do
	{
		r.Randomize(rng, Integer::Zero(), pq);
		z = x << (2*GetK()+2);
		re = a_exp_b_mod_c(r, m_e, m_n);
		a = (z - re) % m_n;
		Integer::Divide(w1, w0, a, pq);
		if (w1.NotZero())
		{
			++w0;
			w1 = pq - w1;
		}
	}
	while ((w1 >> 2*GetK()+1).IsPositive());

	ModularArithmetic modp(m_p);
	Integer t = modp.Divide(w0 * r % m_p, m_e * re % m_p);
	Integer s = r + t*pq;
	assert(s < m_n);
/*
	using namespace std;
	cout << "f = " << x << endl;
	cout << "r = " << r << endl;
	cout << "z = " << z << endl;
	cout << "a = " << a << endl;
	cout << "w0 = " << w0 << endl;
	cout << "w1 = " << w1 << endl;
	cout << "t = " << t << endl;
	cout << "s = " << s << endl;
*/
	return s;
}

bool InvertibleESIGNFunction::Validate(RandomNumberGenerator &rng, unsigned int level) const
{
	bool pass = ESIGNFunction::Validate(rng, level);
	pass = pass && m_p > Integer::One() && m_p.IsOdd() && m_p < m_n;
	pass = pass && m_q > Integer::One() && m_q.IsOdd() && m_q < m_n;
	pass = pass && m_p.BitCount() == m_q.BitCount();
	if (level >= 1)
		pass = pass && m_p * m_p * m_q == m_n;
	if (level >= 2)
		pass = pass && VerifyPrime(rng, m_p, level-2) && VerifyPrime(rng, m_q, level-2);
	return pass;
}

bool InvertibleESIGNFunction::GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const
{
	return GetValueHelper<ESIGNFunction>(this, name, valueType, pValue).Assignable()
		CRYPTOPP_GET_FUNCTION_ENTRY(Prime1)
		CRYPTOPP_GET_FUNCTION_ENTRY(Prime2)
		;
}

void InvertibleESIGNFunction::AssignFrom(const NameValuePairs &source)
{
	AssignFromHelper<ESIGNFunction>(this, source)
		CRYPTOPP_SET_FUNCTION_ENTRY(Prime1)
		CRYPTOPP_SET_FUNCTION_ENTRY(Prime2)
		;
}

NAMESPACE_END

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区三| 欧美色偷偷大香| 亚洲欧美一区二区不卡| 欧美精选一区二区| 国产ts人妖一区二区| 亚洲国产一区视频| 国产亚洲一二三区| 欧美巨大另类极品videosbest| 国产传媒久久文化传媒| 天天色 色综合| 亚洲色图.com| 久久精品在线观看| 日韩欧美卡一卡二| 欧美最猛黑人xxxxx猛交| 国产乱子伦视频一区二区三区| 天堂在线一区二区| 亚洲婷婷综合色高清在线| 精品1区2区在线观看| 色婷婷av一区二区三区软件| 狠狠色丁香久久婷婷综合丁香| 亚洲精品免费电影| 欧美极品美女视频| 欧美一区二区三区免费视频| 色爱区综合激月婷婷| 粗大黑人巨茎大战欧美成人| 激情文学综合丁香| 日本欧美在线看| 洋洋av久久久久久久一区| 综合久久久久久| 国产精品美女www爽爽爽| 久久久精品国产99久久精品芒果| 欧美一区二区视频观看视频| 欧美性色黄大片| 色综合色狠狠综合色| www.日本不卡| 成人综合婷婷国产精品久久| 国产精品77777| 精品一区二区三区免费观看 | 狠狠色2019综合网| 免费人成黄页网站在线一区二区| 亚洲第一久久影院| 亚洲国产精品一区二区久久恐怖片| 亚洲男人的天堂在线aⅴ视频| 最好看的中文字幕久久| 亚洲少妇30p| 亚洲人成在线观看一区二区| 亚洲色欲色欲www| 亚洲人成在线观看一区二区| 亚洲国产cao| 一区二区视频在线看| 亚洲天堂免费看| 亚洲人成在线播放网站岛国| 亚洲综合在线视频| 亚洲一线二线三线久久久| 午夜精品福利一区二区蜜股av | 在线中文字幕一区二区| 在线看日本不卡| 欧美日产国产精品| 日韩一级黄色片| 久久女同精品一区二区| 国产欧美精品区一区二区三区| 中文在线一区二区 | 久久久亚洲精品一区二区三区| 欧美精品一区二区三区在线| 国产精品网站在线| 亚洲精品菠萝久久久久久久| 亚洲成a人在线观看| 色悠悠亚洲一区二区| 国产99久久久国产精品 | www国产精品av| 久久亚洲一区二区三区明星换脸| 国产午夜精品在线观看| 中文字幕视频一区| 亚洲国产乱码最新视频 | 91丨九色porny丨蝌蚪| 欧美在线免费观看亚洲| 欧美变态凌虐bdsm| 国产精品拍天天在线| 亚洲国产一区视频| 国内精品写真在线观看| 91黄色免费观看| 日韩精品中文字幕一区二区三区| 国产精品无人区| 丝袜美腿亚洲色图| 成人免费视频免费观看| 欧美伦理影视网| 国产精品视频yy9299一区| 婷婷综合五月天| proumb性欧美在线观看| 91精品国产美女浴室洗澡无遮挡| 国产精品午夜在线| 天堂av在线一区| caoporen国产精品视频| 国产日韩欧美一区二区三区乱码| 欧美日韩在线播放三区| 26uuu国产电影一区二区| 亚洲人成网站在线| 捆绑变态av一区二区三区| av福利精品导航| 欧美mv日韩mv国产网站app| 亚洲视频一区二区在线| 毛片av一区二区| 欧美亚洲综合另类| 国产欧美日韩三区| 免费一区二区视频| 91久久精品一区二区| 国产亚洲婷婷免费| 日韩高清电影一区| 色8久久精品久久久久久蜜| 久久精品视频免费| 免费高清在线一区| 在线视频欧美精品| 国产精品电影院| 国产乱子伦一区二区三区国色天香 | 亚洲精品你懂的| 国产传媒一区在线| 亚洲精品一区二区三区影院| 日韩成人精品在线观看| 欧美日韩一本到| 亚洲欧美日韩国产综合在线| 丰满岳乱妇一区二区三区| 日韩精品一区二区三区视频 | 色网综合在线观看| 亚洲国产精华液网站w | 国产成人av一区二区| 日韩精品一区二区三区四区| 日本在线不卡视频| 欧美午夜精品免费| 一个色综合网站| 91久久精品午夜一区二区| 亚洲色图一区二区| 91污在线观看| 亚洲精品免费看| 在线视频国内自拍亚洲视频| 亚洲少妇30p| 一本大道久久a久久综合| 亚洲日本在线天堂| 91在线观看成人| 亚洲欧洲综合另类| 欧美性视频一区二区三区| 亚洲一级片在线观看| 欧美精品一二三| 亚洲va国产天堂va久久en| 欧美精品在线观看一区二区| 天天综合网天天综合色| 欧美日本一区二区| 免费在线视频一区| 精品国产欧美一区二区| 国产精品影视在线观看| 国产目拍亚洲精品99久久精品| 成人综合在线观看| 亚洲精选视频在线| 欧美视频一区二区在线观看| 天天影视涩香欲综合网| 日韩欧美电影在线| 国产乱理伦片在线观看夜一区| 国产片一区二区| 色哟哟国产精品| 午夜一区二区三区视频| 欧美电视剧在线观看完整版| 国产精品99久久久久久似苏梦涵| 中文字幕第一页久久| 色悠悠久久综合| 视频一区视频二区在线观看| 久久综合精品国产一区二区三区| 成人午夜碰碰视频| 亚洲一区二区三区免费视频| 欧美α欧美αv大片| 成人综合婷婷国产精品久久| 亚洲综合免费观看高清完整版| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲视频一区在线观看| 色综合久久中文综合久久97| 亚洲成人av资源| 日韩一区二区免费在线观看| 国产高清不卡二三区| 一区二区三区欧美视频| 日韩色视频在线观看| 成人动漫一区二区在线| 天天免费综合色| 亚洲国产精品黑人久久久| 欧美色视频在线观看| 在线精品国精品国产尤物884a| 天堂久久久久va久久久久| 久久精品人人做| 欧美三区在线观看| 国产精品一区二区你懂的| 一区二区三区中文在线| 欧美刺激脚交jootjob| 97精品超碰一区二区三区| 石原莉奈一区二区三区在线观看| 国产亚洲制服色| 欧美性生活久久| 国产黄人亚洲片| 爽爽淫人综合网网站| 国产精品视频九色porn| 日韩欧美一二三四区| 欧美图区在线视频| 国产成人av一区二区| 日韩二区在线观看|