当前位置:   article > 正文

ecc签名体制c语言代码大全,ECC算法C语言实现-Go语言中文社区

eccc语言代码

密码学实验:ECC算法实现

1.实验内容

34cce5ed691ebcb4e62d5923d44e281f.png

2.运行结果:

1.椭圆曲线上的点集

d41fd68de285bb1bffe07086936f0dc9.png

2.椭圆曲线生成元以及对应的阶

dc7fa6c64f52dc5ad0b18c0e1021daa2.png

3.加解密算法

d025d6a2ac48cc0d01095ba2bf33094c.png

代码如下:

/*

(1)编程计算该椭圆曲线上所有在有限域GF(89)上的点;

(2)编程实现椭圆曲线上任意一个点P(例如P=(12,5))的倍点运算的递归算法,即计算k*P( k=2,3,…);(重点!)

(3)利用此递归算法找出椭圆曲线上的所有生成元G以及它们的阶n,即满足n*G=O;

(4)设计实现某一用户B的公钥、私钥算法,即得到public key=(n, G, PB, Ep(a, b))

secure key=nB(小于n)

(5)假如用户A发送明文消息“yes”并加密传输给用户B,用户B接收消息后要能解密为明文。试用ECC密码体制实现此功能。

*/

#include

#include

#include

#include

#include

#define MAX 100

typedef struct point{

int point_x;

int point_y;

}Point;

typedef struct ecc{

struct point p[MAX];

int len;

}ECCPoint;

typedef struct generator{

Point p;

int p_class;

}GENE_SET;

void get_all_points();

int int_sqrt(int s);

Point timesPiont(int k,Point p);

Point add_two_points(Point p1,Point p2);

int inverse(int n,int b);

void get_generetor_class();

void encrypt_ecc();

void decrypt_ecc();

int mod_p(int s);

void print();

int isPrime(int n);

char alphabet[26]="abcdefghijklmnopqrstuvwxyz";

int a=-1,b=0,p=89;//椭圆曲线为E89(-1,0): y2=x3-x (mod 89)

ECCPoint eccPoint;

GENE_SET geneSet[MAX];

int geneLen;

char plain[]="yes";

int m[MAX];

int cipher[MAX];

int nB;//私钥

Point P1,P2,Pt,G,PB;

Point Pm;

int C[MAX];

int main()

{

get_generetor_class();

encrypt_ecc();

decrypt_ecc();</

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/612260
推荐阅读
相关标签
  

闽ICP备14008679号