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

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

?? rw.cpp

?? 200多個常見的VC++加密算法源碼
?? CPP
字號:
// rw.cpp - written and placed in the public domain by Wei Dai

#include "pch.h"
#include "rw.h"
#include "nbtheory.h"
#include "asn.h"

#include "pubkey.cpp"

NAMESPACE_BEGIN(CryptoPP)

template<> const byte EMSA2DigestDecoration<SHA>::decoration = 0x33;
template<> const byte EMSA2DigestDecoration<RIPEMD160>::decoration = 0x31;

template class DigestSignerTemplate<EMSA2Pad, InvertableRWFunction<IFSSA_R> >;
template class DigestVerifierTemplate<EMSA2Pad, RWFunction<IFSSA_R> >;

void EMSA2Pad::Pad(RandomNumberGenerator &, const byte *input, unsigned int inputLen, byte *emsa2Block, unsigned int emsa2BlockLen) const
{
	assert (inputLen > 0 && inputLen <= MaxUnpaddedLength(emsa2BlockLen));

	// convert from bit length to byte length
	emsa2BlockLen++;
	if (emsa2BlockLen % 8 > 1)
	{
		emsa2Block[0] = 0;
		emsa2Block++;
	}
	emsa2BlockLen /= 8;

	emsa2Block[0] = input[0];			// indicate empty or non-empty message
	memset(emsa2Block+1, 0xbb, emsa2BlockLen-inputLen-2);	// padd with 0xbb
	emsa2Block[emsa2BlockLen-inputLen-1] = 0xba;	// separator
	memcpy(emsa2Block+emsa2BlockLen-inputLen, input+1, inputLen-1);
	emsa2Block[emsa2BlockLen-1] = 0xcc;	// make it congruent to 12 mod 16
}

unsigned int EMSA2Pad::Unpad(const byte *emsa2Block, unsigned int emsa2BlockLen, byte *output) const
{
	// convert from bit length to byte length
	emsa2BlockLen++;
	if (emsa2BlockLen % 8 > 1)
	{
		if (emsa2Block[0] != 0)
			return 0;
		emsa2Block++;
	}
	emsa2BlockLen /= 8;

	// check last byte
	if (emsa2Block[emsa2BlockLen-1] != 0xcc)
		return 0;

	// skip past the padding until we find the seperator
	unsigned i=1;
	while (i<emsa2BlockLen-1 && emsa2Block[i++] != 0xba)
		if (emsa2Block[i-1] != 0xbb)     // not valid padding
			return 0;
	assert(i==emsa2BlockLen-1 || emsa2Block[i-1]==0xba);

	unsigned int outputLen = emsa2BlockLen - i;
	output[0] = emsa2Block[0];
	memcpy (output+1, emsa2Block+i, outputLen-1);
	return outputLen;
}

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

template <word r>
RWFunction<r>::RWFunction(const Integer &n)
	: n(n)
{
}

template <word r>
RWFunction<r>::RWFunction(BufferedTransformation &bt)
{
	BERSequenceDecoder seq(bt);
	n.BERDecode(seq);
}

template <word r>
RWFunction<r>::~RWFunction()
{
}

template <word r>
void RWFunction<r>::DEREncode(BufferedTransformation &bt) const
{
	DERSequenceEncoder seq(bt);
	n.DEREncode(seq);
}

template <word r>
Integer RWFunction<r>::ApplyFunction(const Integer &in) const
{
	Integer out = in.Squared()%n;
	const word r2 = r/2;
	const word r3a = (16 + 5 - r) % 16;	// n%16 could be 5 or 13
	const word r3b = (16 + 13 - r) % 16;
	const word r4 = (8 + 5 - r/2) % 8;	// n%8 == 5
	switch (out % 16)
	{
	case r:
		break;
	case r2:
	case r2+8:
		out <<= 1;
		break;
	case r3a:
	case r3b:
		out.Negate();
		out += n;
		break;
	case r4:
	case r4+8:
		out.Negate();
		out += n;
		out <<= 1;
		break;
	default:
		out = Integer::Zero();
	}
	return out;
}

// *****************************************************************************
// private key operations:

template <word r>
InvertableRWFunction<r>::InvertableRWFunction(const Integer &n, const Integer &p, const Integer &q, const Integer &u)
	: RWFunction<r>(n), p(p), q(q), u(u)
{
	assert(p*q==n);
	assert(u*q%p==1);
}

// generate a random private key
template <word r>
InvertableRWFunction<r>::InvertableRWFunction(RandomNumberGenerator &rng, unsigned int keybits)
{
	assert(keybits >= 16);
	// generate 2 random primes of suitable size
	if (keybits%2==0)
	{
		const Integer minP = Integer(182) << (keybits/2-8);
		const Integer maxP = Integer::Power2(keybits/2)-1;
		p.Randomize(rng, minP, maxP, Integer::PRIME, 3, 8);
		q.Randomize(rng, minP, maxP, Integer::PRIME, 7, 8);
	}
	else
	{
		const Integer minP = Integer::Power2((keybits-1)/2);
		const Integer maxP = Integer(181) << ((keybits+1)/2-8);
		p.Randomize(rng, minP, maxP, Integer::PRIME, 3, 8);
		q.Randomize(rng, minP, maxP, Integer::PRIME, 7, 8);
	}

	n = p * q;
	assert(n.BitCount() == keybits);
	u = EuclideanMultiplicativeInverse(q, p);
	assert(u*q%p==1);
}

template <word r>
InvertableRWFunction<r>::InvertableRWFunction(BufferedTransformation &bt)
{
	BERSequenceDecoder seq(bt);
	n.BERDecode(seq);
	p.BERDecode(seq);
	q.BERDecode(seq);
	u.BERDecode(seq);
}

template <word r>
InvertableRWFunction<r>::~InvertableRWFunction()
{
}

template <word r>
void InvertableRWFunction<r>::DEREncode(BufferedTransformation &bt) const
{
	DERSequenceEncoder seq(bt);
	n.DEREncode(seq);
	p.DEREncode(seq);
	q.DEREncode(seq);
	u.DEREncode(seq);
}

template <word r>
Integer InvertableRWFunction<r>::CalculateInverse(const Integer &in) const
{
	Integer cp=in%p, cq=in%q;

	if (Jacobi(cp, p) * Jacobi(cq, q) != 1)
	{
		cp = cp%2 ? (cp+p) >> 1 : cp >> 1;
		cq = cq%2 ? (cq+q) >> 1 : cq >> 1;
	}

	cp = ModularSquareRoot(cp, p);
	cq = ModularSquareRoot(cq, q);

	Integer out = CRT(cq, q, cp, p, u);

	return STDMIN(out, n-out);
}

template class RWFunction<IFSSA_R>;
template class InvertableRWFunction<IFSSA_R>;

NAMESPACE_END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久久久久| 久久久久国产精品免费免费搜索| 久久福利资源站| 亚洲品质自拍视频网站| 7878成人国产在线观看| 丁香婷婷综合激情五月色| 国产综合色产在线精品| 欧美一卡二卡三卡四卡| 91热门视频在线观看| 国产成人自拍高清视频在线免费播放| 天天综合网天天综合色| 亚洲一区二区三区精品在线| 日韩毛片在线免费观看| 国产日韩欧美在线一区| 欧美精品一区二区三区在线播放| 欧美中文字幕不卡| 欧美日韩精品综合在线| 欧美日韩国产另类一区| 9191精品国产综合久久久久久| 91精品一区二区三区久久久久久 | 亚洲日本va午夜在线电影| 国产女主播一区| 国产精品国产三级国产a| 自拍偷拍国产亚洲| 国产精品久久久久一区| 一区二区三区免费看视频| 亚洲国产精品久久人人爱| 日本aⅴ亚洲精品中文乱码| 91蝌蚪porny成人天涯| 欧美日韩视频不卡| 久久久www成人免费毛片麻豆 | 欧美另类videos死尸| 不卡av在线网| 日韩一级视频免费观看在线| 精品视频资源站| 国产精品美女视频| 国产麻豆精品视频| 538prom精品视频线放| 97精品视频在线观看自产线路二| 欧美日韩黄色影视| 亚洲欧洲日本在线| 日韩成人免费电影| 99久久国产综合色|国产精品| 91精品免费在线观看| 亚洲欧美日韩中文字幕一区二区三区 | 国产精品网站一区| 大白屁股一区二区视频| 91精品福利在线| 亚洲免费看黄网站| 亚洲天堂久久久久久久| 美女网站一区二区| 99久久国产综合色|国产精品| 日韩精品中文字幕在线不卡尤物| 精品国产乱码91久久久久久网站| 一区二区三区在线免费视频| 成人午夜电影久久影院| 国产精品久久久久影视| 国产成人综合自拍| 欧美高清视频www夜色资源网| 中文字幕乱码一区二区免费| 久久99国产精品尤物| 日韩美女在线视频| 蜜桃av一区二区三区| 日韩欧美一二三| 精品影视av免费| 久久精子c满五个校花| 91在线精品秘密一区二区| 亚洲欧美综合网| 欧美日韩成人综合在线一区二区| 国产精品18久久久久久久久久久久 | 亚洲r级在线视频| 91精品国产一区二区人妖| 国产一区二区看久久| 中文字幕成人网| 欧美无人高清视频在线观看| 亚洲国产视频一区二区| 久久久一区二区三区捆绑**| 福利电影一区二区三区| 日本午夜精品视频在线观看| 精品女同一区二区| 欧美日本一道本| 欧美精品一二三| 欧美一区二区免费观在线| 在线91免费看| 国产精品伊人色| 麻豆freexxxx性91精品| 亚洲一区二区三区不卡国产欧美| 日韩一区二区三区视频| 不卡大黄网站免费看| 久久国产精品色婷婷| 亚洲成人在线网站| 国产精品视频线看| 国产欧美日韩精品a在线观看| 欧美精品tushy高清| 在线视频国内自拍亚洲视频| 一本久久精品一区二区| 青青青伊人色综合久久| 一区二区三区在线观看视频| 亚洲一区二区五区| 日韩黄色在线观看| 国产精品你懂的在线欣赏| 自拍偷拍国产精品| 国产婷婷精品av在线| 国产精品久久影院| 麻豆国产欧美日韩综合精品二区| 久久99精品国产麻豆婷婷| 一区二区三区视频在线观看| 国产精品久久久久久久浪潮网站| 欧美精品一区男女天堂| 色综合咪咪久久| 日韩精品一区二区三区四区视频| 欧美一区二区高清| 国产欧美一区二区精品性色| 国产精品美女久久久久aⅴ国产馆| 国产精品国产精品国产专区不片| 亚洲黄一区二区三区| 日韩高清在线电影| 91伊人久久大香线蕉| 宅男噜噜噜66一区二区66| 国产欧美日韩视频在线观看| 亚洲国产日韩av| 成人av在线资源网| 欧美日韩精品是欧美日韩精品| 777精品伊人久久久久大香线蕉| 国产精品―色哟哟| 日韩成人精品视频| 欧美日韩一区二区欧美激情| 国产三级精品在线| 日本不卡一区二区三区高清视频| 91影院在线免费观看| 2020国产精品久久精品美国| 天天色综合天天| 91视频在线观看| 国产精品不卡一区二区三区| 久久爱www久久做| 日韩一级视频免费观看在线| 亚洲国产人成综合网站| 国产麻豆一精品一av一免费| 在线视频中文字幕一区二区| 国产精品私人影院| 成人h精品动漫一区二区三区| 久久老女人爱爱| 精品亚洲成a人在线观看| 69堂成人精品免费视频| 午夜国产精品一区| 欧美日韩精品三区| 麻豆91在线播放免费| 久久久精品一品道一区| 国产一区二区三区香蕉 | 在线观看免费亚洲| 奇米影视一区二区三区小说| 亚洲视频每日更新| 久久一留热品黄| 欧美一级在线观看| 欧美嫩在线观看| 国产99久久久国产精品潘金| 日本aⅴ免费视频一区二区三区 | 久久99热这里只有精品| 亚洲午夜一区二区| 日韩毛片在线免费观看| 国产精品嫩草99a| 国产精品亚洲午夜一区二区三区| 欧美日韩精品欧美日韩精品一| 久草热8精品视频在线观看| 中文字幕欧美国产| 制服丝袜中文字幕一区| 色悠久久久久综合欧美99| 国产专区欧美精品| 亚洲电影在线播放| 日本一区二区在线不卡| 欧美久久久久免费| 色婷婷综合久久久中文一区二区| 麻豆成人免费电影| 无码av免费一区二区三区试看| 久久亚洲精品国产精品紫薇| 日韩欧美一级片| 91精品国产一区二区| 色综合久久88色综合天天| 懂色av一区二区三区免费看| 国产一区二三区| 蜜桃精品视频在线| 秋霞电影网一区二区| 麻豆91精品91久久久的内涵| 视频一区二区欧美| 日本欧洲一区二区| 国产一区在线视频| a美女胸又www黄视频久久| 成人av综合一区| 国产高清成人在线| 免费观看30秒视频久久| 久久久午夜精品| 精品国精品国产| 在线观看日韩电影| 久久精品国产99| 婷婷六月综合亚洲| 亚洲综合久久av| 中文字幕一区二区三区四区| 欧美精彩视频一区二区三区| 久久亚洲一级片| 中文在线免费一区三区高中清不卡|