model

package
v0.0.0-...-f3e82c0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 6, 2019 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SolveGaussian

func SolveGaussian(eqM [][]*big.Rat, printTriangularForm bool) (res [][]*big.Rat, err error)

Types

type ElgamalDeform

type ElgamalDeform struct {
	//阶
	P *big.Int
	//生成元
	G *big.Int
	//自己的私钥
	SK *big.Int
	//自己的公钥
	PK *big.Int
	//密钥交换得到的公钥
	H *big.Int
}

func (*ElgamalDeform) Decrypt1

func (ed *ElgamalDeform) Decrypt1(c1 *big.Int) (*big.Int, error)

解密步骤1,传入c1,传出c1^sk

func (*ElgamalDeform) Decrypt2

func (ed *ElgamalDeform) Decrypt2(c2 *big.Int, c1sk *big.Int) (*big.Int, error)

解密步骤2,传入c2、对方的解密步骤1输出的c1^sk,传出明文m

func (*ElgamalDeform) Encrypt

func (ed *ElgamalDeform) Encrypt(m *big.Int) (*big.Int, *big.Int, error)

加密,传入明文,传出密文c1,c2和错误信息(如有)

func (*ElgamalDeform) Init

func (ed *ElgamalDeform) Init(p *big.Int, g *big.Int) (*big.Int, *big.Int, error)

初始化,传入素数p和生成元g,传出私钥、公钥、错误信息(若有)

func (*ElgamalDeform) SetPk

func (ed *ElgamalDeform) SetPk(pk *big.Int) (*big.Int, error)

传入对方公钥,传出密钥交换的公钥

type Polynomial

type Polynomial struct {
	IsEncrypted bool
	//k阶
	Length int64
	//加密前
	MCoefficients []*big.Int
	//加密后
	ECoefficients1 []*big.Int
	ECoefficients2 []*big.Int
	Ed             *ElgamalDeform
}

多项式

func CalGcdPolynomial

func CalGcdPolynomial(fa, fb *Polynomial) (*Polynomial, error)

协议第三步和第四步,选取多项式r1r2,计算r1fa+r2fb

func Init

func Init(ed *ElgamalDeform) (*Polynomial, error)

初始化,配置一个加密算法

func (*Polynomial) Add

func (p *Polynomial) Add(g *Polynomial) (*Polynomial, error)

多项式加法

func (*Polynomial) CalculatePolynomial

func (p *Polynomial) CalculatePolynomial(x *big.Int) (*big.Int, error)

多项式求值

func (*Polynomial) ChangeShare

func (p *Polynomial) ChangeShare(c1s []*big.Int) ([]*big.Int, error)

协议第五步,交换各自对整合多项式的解密分享c1sk

func (*Polynomial) DecryptPolynomial

func (p *Polynomial) DecryptPolynomial(c1sk, c2s []*big.Int) (*Polynomial, error)

协议第六步,最后解密出明文多项式

func (*Polynomial) EncryptPolynomial

func (p *Polynomial) EncryptPolynomial() error

多项式加密系数,加密类中的系数,为协议第二步,加密多项式

func (*Polynomial) Mul

func (p *Polynomial) Mul(g *Polynomial) (*Polynomial, error)

多项式乘法,f是加密后的,g是未加密的

func (*Polynomial) RandomPolynomial

func (p *Polynomial) RandomPolynomial() (*Polynomial, error)

随机未加密多项式

func (*Polynomial) SetPolynomial

func (p *Polynomial) SetPolynomial(attrs []*big.Int) error

多项式生成,使用高斯消元法得到系数

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL