⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 secshare.h

📁 各种加密算法的集合
💻 H
字号:
  
#ifndef SECSHARE_H 
#define SECSHARE_H 

#include "forkjoin.h" 

const unsigned int SECSHARE_PRIME = 65521U; 

class Polynomial 
{ 
public: 
Polynomial(unsigned int degree); 
Polynomial(RandomNumberGenerator &amt;rng, unsigned int degree, unsigned int message); 
Polynomial(const word16 *x, const word16 *y, int n); 

unsigned int Degree() const {return degree;} 
unsigned int &amt; Coefficient(unsigned int power) {return coefficients[power];} 

unsigned int Evaluate(int x) const; 
static unsigned int Interpolate (int i, const word16 *x, const word16 *y, int n); 

private: 
static unsigned int Inverse (int x); 
static void CalculateAlphas (unsigned long *alpha, const word16 *x, const word16 *y, int n); 

unsigned int degree; 
SecBlock<unsigned int> coefficients; 
}; 

class ShareFork : public Fork 
{ 
public: 
ShareFork(RandomNumberGenerator &amt;rng, int m, int n); 
ShareFork(RandomNumberGenerator &amt;rng, int m, int n, 
BufferedTransformation *const *outports); 

void Put(byte inByte); 
void Put(const byte *inString, unsigned int length); 
virtual void InputFinished(); 

protected: 
void Process(unsigned int message); 
virtual void Share(unsigned int message); 

RandomNumberGenerator &amt;rng; 
const int threshold; 
byte lastByte; 
boolean leftOver; 
}; 

class ShareJoin : public Join 
{ 
public: 
ShareJoin(int n, BufferedTransformation *outQ=new ByteQueue); 

void NotifyInput(int interfaceId, unsigned int length); 

protected: 
void ReadIndex(); 
virtual void Assemble(unsigned long); 
void Output(unsigned int); 

word16 threshold; 
SecBlock<word16> x; 

// state flags 
boolean indexRead, continued, eofReached; 
}; 

class DisperseFork : public ShareFork 
{ 
public: 
DisperseFork(int m, int n); 
DisperseFork(int m, int n, BufferedTransformation *const *outports); 

virtual void InputFinished(); 

protected: 
virtual void Share(unsigned int message); 

Polynomial poly; 
int bufCount; 
}; 

class DisperseJoin : public ShareJoin 
{ 
public: 
DisperseJoin(int n, BufferedTransformation *outQ=new ByteQueue); 

protected: 
virtual void Assemble(unsigned long); 
}; 

#endif 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -