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

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

?? secshare.cpp

?? #include "pch.h" #include "base64.h" NAMESPACE_BEGIN(CryptoPP) static const int MAX_LINE_LENG
?? CPP
字號:
// secshare.cpp - written and placed in the public domain by Wei Dai

#include "pch.h"
#include "secshare.h"
#include "queue.h"
#include "algebra.h"
#include "gf2_32.h"
#include "polynomi.h"

#include "algebra.cpp"
#include "polynomi.cpp"

ANONYMOUS_NAMESPACE_BEGIN
class Field : public CryptoPP::GF2_32
{
public:
	Field() : GF2_32(0xB1D89917) {}

	Element Divide(Element a, Element b) const
	{
		static Element invTable[256];
		Element bInv;

		if (b<256 && invTable[b])
			bInv = invTable[b];
		else
			bInv = invTable[b] = MultiplicativeInverse(b);

		return Multiply(a, bInv);
	}
};

typedef CryptoPP::PolynomialOverFixedRing<Field> Polynomial;
typedef CryptoPP::RingOfPolynomialsOver<Field> PolynomialRing;

static const Field field;
static const PolynomialRing polynomialRing(field);
NAMESPACE_END

NAMESPACE_BEGIN(CryptoPP)

const Polynomial::Ring Polynomial::fixedRing(field);

ShareFork::ShareFork(RandomNumberGenerator &rng, word32 m, word32 n, BufferedTransformation *const *outports)
	: Fork(n, outports), m_rng(rng), m_threshold(m), m_count(0)
{
	for (int i=0; i<NumberOfPorts(); i++)
	{
		AccessPort(i).PutLong(m_threshold);
		AccessPort(i).PutLong(i+1);
	}
}

void ShareFork::Put(byte inByte)
{
	m_buffer = (m_buffer<<8) | inByte;
	if (++m_count == 4)
	{
		Share(m_buffer);
		m_count = 0;
		m_buffer = 0;
	}
}

void ShareFork::Put(const byte *inString, unsigned int length)
{
	while (length--)
		Put(*inString++);
}

void ShareFork::Share(word32 message)
{
	Polynomial::RandomizationParameter param(m_threshold, 0);
	Polynomial poly(m_rng, param);
	poly.SetCoefficient(0, message);

	for (unsigned int i=0; i<NumberOfPorts(); i++)
		AccessPort(i).PutLong(poly.EvaluateAt(i+1));
}

void ShareFork::InputFinished()
{
	byte filler = 4-m_count;
	assert(filler > 0 && filler <= 4);

	for (byte i = 0; i<filler; i++)
		Put(filler);

	assert(m_count == 0);
}

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

ShareJoin::ShareJoin(unsigned int n, BufferedTransformation *outQ)
	: Join(n, outQ), m_x(n), m_indexRead(false), m_firstOutput(true)
{
	assert(n>0);
}

void ShareJoin::NotifyInput(unsigned int /* interfaceId */, unsigned int /* length */)
{
	unsigned long n = AccessPort(0).MaxRetrieveable();

	for (unsigned int i=1; n && i<NumberOfPorts(); i++)
		n = STDMIN(n, AccessPort(i).MaxRetrieveable());

	if (!m_indexRead && n>=8)
	{
		ReadIndex();
		n -= 8;
	}

	if (m_indexRead)
		Assemble(n);
}

void ShareJoin::ReadIndex()
{
	for (unsigned int i=0; i<NumberOfPorts(); i++)
	{
		AccessPort(i).GetLong(m_threshold);
		AccessPort(i).GetLong(m_x[i]);
	}

	m_indexRead = true;
}

void ShareJoin::NotifyClose(unsigned int id)
{
	if (InterfacesOpen() == 1)
	{
		byte filler = m_buffer & 0xff;
		for (unsigned int i=3; i && i>=filler; --i)
			outQueue->Put(byte(m_buffer>>(8*i)));
	}

	Join::NotifyClose(id);
}

void ShareJoin::Assemble(unsigned long n)
{
	SecBlock<word32> y(NumberOfPorts());

	while (n>=4)
	{
		for (unsigned int i=0; i<NumberOfPorts(); i++)
			AccessPort(i).GetLong(y[i]);

		Output(polynomialRing.InterpolateAt(0, m_x, y, NumberOfPorts()));
		n -= 4;
	}
}

void ShareJoin::Output(word32 message)
{
	if (m_firstOutput)
		m_firstOutput = false;
	else
		outQueue->PutLong(m_buffer);

	m_buffer = message;
}

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

DisperseFork::DisperseFork(unsigned int m, unsigned int n, BufferedTransformation *const *outports)
	: ShareFork(*(RandomNumberGenerator *)0, m, n, outports),
	  m_poly(m), m_polyCount(0)
{
}

void DisperseFork::Share(word32 message)
{
	m_poly[m_polyCount++] = message;

	if (m_polyCount==m_threshold)
	{
		Polynomial poly(m_poly.Begin(), m_poly.End());

		for (unsigned int i=0; i<NumberOfPorts(); i++)
			AccessPort(i).PutLong(poly.EvaluateAt(i+1));

		m_polyCount = 0;
	}
}

void DisperseFork::InputFinished()
{
	ShareFork::InputFinished();

	word32 filler = m_threshold - m_polyCount;
	for (word32 i=0; i<filler; i++)
		Share(filler);
}

DisperseJoin::DisperseJoin(unsigned int n, BufferedTransformation *outQ)
	: ShareJoin(n, outQ), m_firstPolyOutput(true)
{
}

void DisperseJoin::Assemble(unsigned long n)
{
	while (n>=4)
	{
		SecBlock<word32> y(NumberOfPorts());
		unsigned int i;

		for (i=0; i<NumberOfPorts(); i++)
			AccessPort(i).GetLong(y[i]);

		Polynomial poly(polynomialRing.Interpolate(m_x, y, NumberOfPorts()));

		if (m_firstPolyOutput)
		{
			m_polyBuffer.Grow(m_threshold);
			m_firstPolyOutput = false;
		}
		else
		{
			for (i=0; i<m_threshold; i++)
				Output(m_polyBuffer[i]);
		}

		for (i=0; i<m_threshold; i++)
			m_polyBuffer[i] = poly[i];

		n -= 4;
	}
}

void DisperseJoin::NotifyClose(unsigned int id)
{
	if (InterfacesOpen() == 1)
	{
		word32 filler = m_polyBuffer[m_threshold-1];
		for (word32 i=0; i+filler < m_threshold; ++i)
			Output(m_polyBuffer[i]);
	}

	ShareJoin::NotifyClose(id);
}

NAMESPACE_END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美腿丝袜亚洲三区| 国产成人午夜精品影院观看视频| 亚洲国产精品尤物yw在线观看| 婷婷国产在线综合| 99久久夜色精品国产网站| 91精品久久久久久久99蜜桃| 久久久综合网站| 国产欧美一区二区在线| 亚洲成av人片在线| 日韩福利电影在线| 91在线一区二区三区| 日韩三级高清在线| 亚洲精品国产品国语在线app| 一区二区三区欧美亚洲| 狠狠色狠狠色综合| 亚洲一区二区三区三| 日韩综合小视频| 99久久伊人网影院| 日韩欧美国产1| 亚洲丝袜制服诱惑| 国产成人亚洲综合a∨猫咪| 欧美日韩综合在线免费观看| 亚洲欧美自拍偷拍| 免费美女久久99| 欧美日韩国产高清一区二区三区 | 日韩码欧中文字| 精品无码三级在线观看视频| 国产jizzjizz一区二区| 久久久国际精品| 美女视频第一区二区三区免费观看网站 | 蜜臀av性久久久久蜜臀aⅴ四虎| 日本韩国一区二区三区| 国产目拍亚洲精品99久久精品| 免费不卡在线视频| 日韩一级大片在线观看| 日本亚洲视频在线| 欧美日韩一区二区不卡| 日本在线不卡视频| 欧美日韩日本视频| 亚洲成人一区在线| 91精品国产免费久久综合| 亚洲综合激情小说| 日本福利一区二区| 天天色 色综合| 欧美猛男男办公室激情| 亚洲综合在线免费观看| 欧美三级三级三级| 亚洲国产一区二区在线播放| 欧美主播一区二区三区| 亚洲精品久久久久久国产精华液| 成人免费毛片a| 国产精品盗摄一区二区三区| 日本视频一区二区三区| 国产午夜精品久久久久久久| 国产精品一区专区| 欧美va亚洲va| 91色视频在线| 亚洲制服丝袜一区| 91浏览器在线视频| 蜜桃视频第一区免费观看| 26uuu另类欧美| 成人免费看片app下载| 香蕉久久一区二区不卡无毒影院| 91精品久久久久久蜜臀| 国产在线一区二区| 国产精品久久国产精麻豆99网站| 青青草国产成人99久久| 精品国产露脸精彩对白| 色美美综合视频| 日韩高清欧美激情| 日本一区二区不卡视频| 欧美在线制服丝袜| 久久精品999| 亚洲精品美腿丝袜| 日韩欧美国产一区在线观看| 国产成人三级在线观看| 午夜激情一区二区三区| 久久婷婷成人综合色| av在线播放一区二区三区| 日韩精品成人一区二区三区| 久久久久久综合| 在线观看免费亚洲| 成人av影院在线| 青青草国产精品亚洲专区无| 亚洲欧美在线另类| 久久精品无码一区二区三区| 色综合久久88色综合天天6| 日韩制服丝袜av| 亚洲精品成人少妇| 久久久久久一级片| 欧美日韩大陆在线| 一本一本久久a久久精品综合麻豆| 日韩激情中文字幕| 国产欧美日韩不卡| 久久这里都是精品| 在线国产电影不卡| 成人午夜视频在线| 国产剧情一区在线| 日韩av午夜在线观看| 国产精品传媒视频| 国产精品久久久久久久裸模| 欧美电影免费观看高清完整版 | 丁香天五香天堂综合| 午夜精品影院在线观看| 国产精品剧情在线亚洲| 久久综合av免费| 欧美群妇大交群中文字幕| 91首页免费视频| 91影院在线免费观看| 国产在线看一区| 日av在线不卡| 奇米一区二区三区av| 午夜久久久久久久久| 伊人一区二区三区| 亚洲最快最全在线视频| 国产精品久久久久桃色tv| 久久久久久久国产精品影院| wwwwww.欧美系列| 欧美一区二区视频网站| 欧美日本不卡视频| 欧美精品第1页| 在线一区二区三区做爰视频网站| 国产乱理伦片在线观看夜一区| 国产高清不卡一区| 国产精品一级片在线观看| 日韩成人一级片| 国模娜娜一区二区三区| 紧缚捆绑精品一区二区| 久久se这里有精品| 高清成人在线观看| 成人av在线影院| 国产在线一区二区| 免费欧美在线视频| 午夜精品久久久久久久99水蜜桃| 免费人成精品欧美精品| 免费观看日韩电影| 天天操天天干天天综合网| 久久精品国产亚洲a| 久久99精品久久久久久动态图| 国产日本欧洲亚洲| 天堂精品中文字幕在线| 国产精品激情偷乱一区二区∴| 欧美一区在线视频| 国产成人午夜精品5599| 亚洲成av人**亚洲成av**| 亚洲高清免费观看| 国产麻豆精品久久一二三| 国产精品18久久久久久久久| 国产不卡免费视频| 欧美视频一二三区| 日韩免费观看2025年上映的电影| 欧美r级电影在线观看| 国产精品久久二区二区| 亚洲国产sm捆绑调教视频 | 国产成人8x视频一区二区| 一本大道久久a久久综合婷婷| 欧美午夜精品久久久| 日韩丝袜美女视频| 亚洲女同女同女同女同女同69| 天天亚洲美女在线视频| 国产伦精一区二区三区| 欧美日韩亚洲综合在线| 欧美videos中文字幕| 亚洲欧美电影院| 欧美在线视频全部完| 91麻豆精品国产无毒不卡在线观看| 欧洲精品一区二区| 久久久99免费| 一级做a爱片久久| 麻豆精品国产91久久久久久| 欧美羞羞免费网站| 久久久久久久网| 一个色在线综合| 国产 欧美在线| 欧美老肥妇做.爰bbww| 亚洲国产精品精华液2区45| 九九视频精品免费| 欧美在线色视频| 亚洲日本一区二区三区| 国产福利一区二区三区视频| 欧美一区二区三区视频免费 | 成人国产亚洲欧美成人综合网| 欧美一区二区三区免费在线看| 亚洲精品你懂的| av网站免费线看精品| 欧美国产欧美综合| 国产真实乱对白精彩久久| 日韩欧美国产成人一区二区| 国产在线精品国自产拍免费| 亚洲欧美另类综合偷拍| 国产福利91精品一区二区三区| 6080日韩午夜伦伦午夜伦| 一二三四区精品视频| 91丝袜美腿高跟国产极品老师 | 欧美一二三四在线| 亚洲成人一区在线| 在线观看91av| 久久丁香综合五月国产三级网站| 欧美一区二区美女| 激情亚洲综合在线|