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

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

?? eccrypto.cpp

?? 加密函數(shù)庫(kù):包括多種加密解密算法,數(shù)字簽名,散列算法
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
			"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFE56D",
			"00000000000000000000000000000000000000000000000000000000",
			"00000000000000000000000000000000000000000000000000000005",
			"04A1455B334DF099DF30FC28A169A467E9E47075A90F7E650EB6B7A45C7E089FED7FBA344282CAFBD6F7E319F7C0B0BD59E2CA4BDB556D61A5",
			"010000000000000000000000000001DCE8D2EC6184CAF0A971769FB1F7",
			1),
		EcRecommendedParameters<ECP>(ASN1::secp224r1(),
			"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001",
			"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE",
			"B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4",
			"04B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34",
			"FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D",
			1),
		EcRecommendedParameters<ECP>(ASN1::secp384r1(),
			"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF",
			"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC",
			"B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF",
			"04AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB73617DE4A96262C6F5D9E98BF9292DC29F8F41DBD289A147CE9DA3113B5F0B8C00A60B1CE1D7E819D7A431D7C90EA0E5F",
			"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973",
			1),
		EcRecommendedParameters<ECP>(ASN1::secp521r1(),
			"01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
			"01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC",
			"0051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00",
			"0400C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66011839296A789A3BC0045C8A5FB42C7D1BD998F54449579B446817AFBD17273E662C97EE72995EF42640C550B9013FAD0761353C7086A272C24088BE94769FD16650",
			"01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409",
			1),
	};
	begin = rec;
	end = rec + sizeof(rec)/sizeof(rec[0]);
}

template <class EC> OID DL_GroupParameters_EC<EC>::GetNextRecommendedParametersOID(const OID &oid)
{
	const EcRecommendedParameters<EllipticCurve> *begin, *end;
	GetRecommendedParameters(begin, end);
	const EcRecommendedParameters<EllipticCurve> *it = std::upper_bound(begin, end, oid, OIDLessThan());
	return (it == end ? OID() : it->oid);
}

template <class EC> void DL_GroupParameters_EC<EC>::Initialize(const OID &oid)
{
	const EcRecommendedParameters<EllipticCurve> *begin, *end;
	GetRecommendedParameters(begin, end);
	const EcRecommendedParameters<EllipticCurve> *it = std::lower_bound(begin, end, oid, OIDLessThan());
	if (it == end || it->oid != oid)
		throw UnknownOID();

	const EcRecommendedParameters<EllipticCurve> &param = *it;
	m_oid = oid;
	std::auto_ptr<EllipticCurve> ec(param.NewEC());
	m_groupPrecomputation.SetCurve(*ec);

	StringSource ssG(param.g, true, new HexDecoder);
	Element G;
	bool result = GetCurve().DecodePoint(G, ssG, ssG.MaxRetrievable());
	SetSubgroupGenerator(G);
	assert(result);

	StringSource ssN(param.n, true, new HexDecoder);
	m_n.Decode(ssN, ssN.MaxRetrievable());
	m_k = param.h;
}

template <class EC>
bool DL_GroupParameters_EC<EC>::GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const
{
	if (strcmp(name, Name::GroupOID()) == 0)
	{
		if (m_oid.m_values.empty())
			return false;

		ThrowIfTypeMismatch(name, typeid(OID), valueType);
		*reinterpret_cast<OID *>(pValue) = m_oid;
		return true;
	}
	else
		return GetValueHelper<DL_GroupParameters<Element> >(this, name, valueType, pValue).Assignable()
			CRYPTOPP_GET_FUNCTION_ENTRY(Curve);
}

template <class EC>
void DL_GroupParameters_EC<EC>::AssignFrom(const NameValuePairs &source)
{
	OID oid;
	if (source.GetValue(Name::GroupOID(), oid))
		Initialize(oid);
	else
	{
		EllipticCurve ec;
		Point G;
		Integer n;

		source.GetRequiredParameter("DL_GroupParameters_EC<EC>", Name::Curve(), ec);
		source.GetRequiredParameter("DL_GroupParameters_EC<EC>", Name::SubgroupGenerator(), G);
		source.GetRequiredParameter("DL_GroupParameters_EC<EC>", Name::SubgroupOrder(), n);
		Integer k = source.GetValueWithDefault(Name::Cofactor(), Integer::Zero());

		Initialize(ec, G, n, k);
	}
}

template <class EC>
void DL_GroupParameters_EC<EC>::GenerateRandom(RandomNumberGenerator &rng, const NameValuePairs &alg)
{
	try
	{
		AssignFrom(alg);
	}
	catch (InvalidArgument &)
	{
		throw NotImplemented("DL_GroupParameters_EC<EC>: curve generation is not implemented yet");
	}
}

template <class EC>
void DL_GroupParameters_EC<EC>::BERDecode(BufferedTransformation &bt)
{
	byte b;
	if (!bt.Peek(b))
		BERDecodeError();
	if (b == OBJECT_IDENTIFIER)
		Initialize(OID(bt));
	else
	{
		BERSequenceDecoder seq(bt);
			word32 version;
			BERDecodeUnsigned<word32>(seq, version, INTEGER, 1, 1);	// check version
			EllipticCurve ec(seq);
			Point G = ec.BERDecodePoint(seq);
			Integer n(seq);
			Integer k;
			bool cofactorPresent = !seq.EndReached();
			if (cofactorPresent)
				k.BERDecode(seq);
			else
				k = Integer::Zero();
		seq.MessageEnd();

		Initialize(ec, G, n, k);
	}
}

template <class EC>
void DL_GroupParameters_EC<EC>::DEREncode(BufferedTransformation &bt) const
{
	if (m_encodeAsOID && !m_oid.m_values.empty())
		m_oid.DEREncode(bt);
	else
	{
		DERSequenceEncoder seq(bt);
		DEREncodeUnsigned<word32>(seq, 1);	// version
		GetCurve().DEREncode(seq);
		GetCurve().DEREncodePoint(seq, GetSubgroupGenerator(), m_compress);
		m_n.DEREncode(seq);
		if (m_k.NotZero())
			m_k.DEREncode(seq);
		seq.MessageEnd();
	}
}

template <class EC>
Integer DL_GroupParameters_EC<EC>::GetCofactor() const
{
	if (!m_k)
	{
		Integer q = GetCurve().FieldSize();
		Integer qSqrt = q.SquareRoot();
		m_k = (q+2*qSqrt+1)/m_n;
	}

	return m_k;
}

template <class EC>
Integer DL_GroupParameters_EC<EC>::ConvertElementToInteger(const Element &element) const
{
	return ConvertToInteger(element.x);
};

template <class EC>
bool DL_GroupParameters_EC<EC>::ValidateGroup(RandomNumberGenerator &rng, unsigned int level) const
{
	bool pass = GetCurve().ValidateParameters(rng, level);

	Integer q = GetCurve().FieldSize();
	pass = pass && m_n!=q;

	if (level >= 2)
	{
		Integer qSqrt = q.SquareRoot();
		pass = pass && m_n>4*qSqrt;
		pass = pass && VerifyPrime(rng, m_n, level-2);
		pass = pass && (m_k.IsZero() || m_k == (q+2*qSqrt+1)/m_n);
		pass = pass && CheckMOVCondition(q, m_n);
	}

	return pass;
}

template <class EC>
bool DL_GroupParameters_EC<EC>::ValidateElement(unsigned int level, const Element &g, const DL_FixedBasePrecomputation<Element> *gpc) const
{
	bool pass = !IsIdentity(g) && GetCurve().VerifyPoint(g);
	if (level >= 1)
	{
		if (gpc)
			pass = pass && gpc->Exponentiate(GetGroupPrecomputation(), Integer::One()) == g;
	}
	if (level >= 2)
	{
		const Integer &q = GetSubgroupOrder();
		pass = pass && IsIdentity(gpc ? gpc->Exponentiate(GetGroupPrecomputation(), q) : ExponentiateElement(g, q));
	}
	return pass;
}

template <class EC>
void DL_GroupParameters_EC<EC>::SimultaneousExponentiate(Element *results, const Element &base, const Integer *exponents, unsigned int exponentsCount) const
{
	GetCurve().SimultaneousMultiply(results, base, exponents, exponentsCount);
}

template <class EC>
CPP_TYPENAME DL_GroupParameters_EC<EC>::Element DL_GroupParameters_EC<EC>::MultiplyElements(const Element &a, const Element &b) const
{
	return GetCurve().Add(a, b);
}

template <class EC>
CPP_TYPENAME DL_GroupParameters_EC<EC>::Element DL_GroupParameters_EC<EC>::CascadeExponentiate(const Element &element1, const Integer &exponent1, const Element &element2, const Integer &exponent2) const
{
	return GetCurve().CascadeMultiply(exponent1, element1, exponent2, element2);
}

template <class EC>
OID DL_GroupParameters_EC<EC>::GetAlgorithmID() const
{
	return ASN1::id_ecPublicKey();
}

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

template <class EC>
void DL_PublicKey_EC<EC>::BERDecodeKey2(BufferedTransformation &bt, bool parametersPresent, unsigned int size)
{
	typename EC::Point P;
	if (!GetGroupParameters().GetCurve().DecodePoint(P, bt, size))
		BERDecodeError();
	SetPublicElement(P);
}

template <class EC>
void DL_PublicKey_EC<EC>::DEREncodeKey(BufferedTransformation &bt) const
{
	GetGroupParameters().GetCurve().EncodePoint(bt, GetPublicElement(), GetGroupParameters().GetPointCompression());
}

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

template <class EC>
void DL_PrivateKey_EC<EC>::BERDecodeKey2(BufferedTransformation &bt, bool parametersPresent, unsigned int size)
{
	BERSequenceDecoder seq(bt);
		word32 version;
		BERDecodeUnsigned<word32>(seq, version, INTEGER, 1, 1);	// check version

		BERGeneralDecoder dec(seq, OCTET_STRING);
		if (!dec.IsDefiniteLength())
			BERDecodeError();
		Integer x;
		x.Decode(dec, dec.RemainingLength());
		dec.MessageEnd();
		if (!parametersPresent && seq.PeekByte() != (CONTEXT_SPECIFIC | CONSTRUCTED | 0))
			BERDecodeError();
		if (!seq.EndReached() && seq.PeekByte() == (CONTEXT_SPECIFIC | CONSTRUCTED | 0))
		{
			BERGeneralDecoder parameters(seq, CONTEXT_SPECIFIC | CONSTRUCTED | 0);
			AccessGroupParameters().BERDecode(parameters);
			parameters.MessageEnd();
		}
		if (!seq.EndReached())
		{
			// skip over the public element
			SecByteBlock subjectPublicKey;
			unsigned int unusedBits;
			BERGeneralDecoder publicKey(seq, CONTEXT_SPECIFIC | CONSTRUCTED | 1);
			BERDecodeBitString(publicKey, subjectPublicKey, unusedBits);
			publicKey.MessageEnd();
			Element Q;
			if (!(unusedBits == 0 && GetGroupParameters().GetCurve().DecodePoint(Q, subjectPublicKey, subjectPublicKey.size())))
				BERDecodeError();
		}
	seq.MessageEnd();

	SetPrivateExponent(x);
}

template <class EC>
void DL_PrivateKey_EC<EC>::DEREncodeKey(BufferedTransformation &bt) const
{
	DERSequenceEncoder privateKey(bt);
		DEREncodeUnsigned<word32>(privateKey, 1);	// version
		// SEC 1 ver 1.0 says privateKey (m_d) has the same length as order of the curve
		// this will be changed to order of base point in a future version
		GetPrivateExponent().DEREncodeAsOctetString(privateKey, GetGroupParameters().GetSubgroupOrder().ByteCount());
	privateKey.MessageEnd();
}

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

template class DL_GroupParameters_EC<EC2N>;
template class DL_GroupParameters_EC<ECP>;
template class DL_PublicKey_EC<EC2N>;
template class DL_PublicKey_EC<ECP>;
template class DL_PrivateKey_EC<EC2N>;
template class DL_PrivateKey_EC<ECP>;

NAMESPACE_END

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产三级精品三级| 国产成人精品在线看| 国产一区二区伦理片| 成人午夜电影久久影院| 91成人网在线| 日韩一区二区在线看| 国产亚洲一区二区三区在线观看| 亚洲欧美在线视频| 日日骚欧美日韩| 国产乱码精品一区二区三区忘忧草| 亚洲制服欧美中文字幕中文字幕| 亚洲精品videosex极品| 日韩一区欧美二区| 亚洲综合免费观看高清在线观看| 亚洲综合久久久久| 亚洲成人自拍网| 国产一二精品视频| 一本大道久久a久久精品综合| 日韩免费高清电影| 国产不卡一区视频| 欧美一区二区在线看| 成人av网站在线观看免费| 欧美视频一区二区三区四区| 精品毛片乱码1区2区3区| 亚洲特黄一级片| 久久精品国产99久久6| 色婷婷国产精品久久包臀| 日韩美女天天操| 亚洲最新在线观看| 国产一区二区三区蝌蚪| 欧美日韩免费不卡视频一区二区三区| 精品盗摄一区二区三区| 夜夜亚洲天天久久| 成人精品电影在线观看| 日韩免费看的电影| 夜夜爽夜夜爽精品视频| jizzjizzjizz欧美| 久久久久久久免费视频了| 亚洲成人一区在线| 91麻豆成人久久精品二区三区| 精品国产乱码久久久久久浪潮 | 亚洲午夜精品一区二区三区他趣| 久久99精品国产91久久来源| 欧美日韩日日夜夜| 亚洲欧美电影一区二区| 国产露脸91国语对白| 日韩精品中文字幕在线一区| 亚洲宅男天堂在线观看无病毒| 国产91精品免费| 精品欧美一区二区在线观看| 三级影片在线观看欧美日韩一区二区| 91日韩精品一区| 国产免费久久精品| 精品一区二区三区免费观看 | 日日夜夜免费精品| 日本精品视频一区二区三区| 中国av一区二区三区| 国产精品一区二区x88av| 日韩欧美一区二区久久婷婷| 亚洲精品欧美二区三区中文字幕| 久久99这里只有精品| 成人18精品视频| 99精品国产热久久91蜜凸| 国产亚洲欧美日韩俺去了| 国模一区二区三区白浆| 日韩欧美一区中文| 日韩av网站在线观看| 91成人看片片| 亚洲美女区一区| 在线免费视频一区二区| 亚洲精品视频在线看| 972aa.com艺术欧美| 国产精品国产三级国产有无不卡 | 久久精品亚洲精品国产欧美 | 欧美一区二区三区在| 国产一区二区三区四区五区入口 | 亚洲色图另类专区| av动漫一区二区| 综合婷婷亚洲小说| 91热门视频在线观看| 亚洲激情av在线| 欧美日韩一卡二卡| 午夜精品123| 欧美美女网站色| 日韩高清一区二区| 欧美人妇做爰xxxⅹ性高电影 | 欧美精品在线观看一区二区| 亚洲国产三级在线| 日韩写真欧美这视频| 国内精品久久久久影院色| 久久久久高清精品| 岛国av在线一区| 国产精品久久久久久久久晋中 | 一区二区三区中文字幕在线观看| 一本色道久久综合狠狠躁的推荐| 亚洲一二三级电影| 91精品国模一区二区三区| 久久er精品视频| 国产欧美视频一区二区三区| www.一区二区| 一区二区三区视频在线观看| 欧美日本乱大交xxxxx| 青青草视频一区| 国产欧美一区二区三区在线老狼| av网站免费线看精品| 亚洲一区二区欧美| 精品国产91乱码一区二区三区| 国产超碰在线一区| 亚洲综合视频网| 日韩视频一区二区| 粉嫩嫩av羞羞动漫久久久| 亚洲综合网站在线观看| 日韩欧美色综合网站| www.欧美色图| 日韩精品视频网站| 久久久99精品久久| 欧美视频你懂的| 国产又粗又猛又爽又黄91精品| 国产精品国产三级国产普通话蜜臀 | 欧美日韩一区不卡| 国产精品一二三四| 亚洲一区二区三区不卡国产欧美| 久久综合九色综合欧美就去吻| 99精品一区二区| 喷白浆一区二区| 成人av电影在线观看| 色婷婷国产精品| 韩国av一区二区三区在线观看| 亚洲欧洲av另类| 日韩一区二区在线看| 91在线精品秘密一区二区| 热久久国产精品| 亚洲欧美日本在线| 久久中文字幕电影| 91精品福利视频| 高清成人免费视频| 欧美aaaaa成人免费观看视频| 国产精品久久久久aaaa| 精品欧美一区二区在线观看| 69堂国产成人免费视频| 蜜臀精品久久久久久蜜臀| 亚洲欧洲99久久| 久久婷婷久久一区二区三区| 欧美日韩精品一区二区在线播放| 99久久婷婷国产精品综合| 久久99精品一区二区三区三区| 一区二区三区中文字幕| 国产日韩av一区| 日韩午夜激情视频| 欧美日韩在线三区| 91老司机福利 在线| 国产69精品一区二区亚洲孕妇| 日韩中文字幕不卡| 一区二区三区四区乱视频| 中文字幕欧美激情一区| 久久综合色8888| 91精品一区二区三区久久久久久 | 精品少妇一区二区三区 | 亚洲午夜免费电影| 国产精品久久久久久久久免费丝袜| 日韩欧美第一区| 精品视频一区二区不卡| 91看片淫黄大片一级在线观看| 国产精品原创巨作av| 美国三级日本三级久久99| 午夜欧美电影在线观看| 亚洲免费在线视频一区 二区| 国产精品人成在线观看免费| 久久久五月婷婷| 精品剧情在线观看| 欧美一区二区在线看| 在线播放中文字幕一区| 欧美三级午夜理伦三级中视频| 91日韩一区二区三区| 91在线免费视频观看| 粉嫩嫩av羞羞动漫久久久| 日韩女优av电影在线观看| 91精品国产黑色紧身裤美女| 欧美日韩精品一区二区在线播放| 欧美网站一区二区| 在线视频观看一区| 欧美色综合网站| 精品视频资源站| 欧美日韩大陆在线| 51精品秘密在线观看| 91精品午夜视频| 3d成人h动漫网站入口| 91精品国产一区二区三区蜜臀| 欧美精品一二三| 3atv在线一区二区三区| 日韩欧美国产wwwww| 精品精品国产高清a毛片牛牛| 欧美成人一区二区三区| 精品国产乱码久久久久久久| 久久久久久久性| 国产精品狼人久久影院观看方式| 中文字幕欧美日本乱码一线二线| 最新中文字幕一区二区三区| 亚洲免费观看高清在线观看| 一区二区高清在线|