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

📄 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 &rng, unsigned int degree, unsigned int message);
    Polynomial(const word16 *x, const word16 *y, int n);

    unsigned int Degree() const {return degree;}
    unsigned int & 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 &rng, int m, int n);
    ShareFork(RandomNumberGenerator &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 &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 + -