密码学实验课的题目,分享一下自己的代码,可能不够完美,供参考~自己动手才是王道哦!

一、实验目的

  1. 掌握椭圆曲线上的加法定律;
  2. 熟练求解椭圆曲线上的离散对数问题。

二、实验原理

(1)有限域GF§上的椭圆曲线:对于固定的a和b,满足形如方程
y2≡x3+ax+b(mod p) ( a,b,x,yGF§且4a3+27b2(mod p)≠0).
(2)椭圆曲线Ep(a,b)上的加法定义如下:
设P, Q, REp(a,b),则
①P+O=O+P=P;
②若P=(x,y),那么(x, y)+(x, -y)=O,即(x, -y)是P的加法逆元,记为-P;
③P+Q=Q+P;
④(P+Q)+R=P+(Q+R);
⑤设P=(x1,y1),Q=(x2,y2),P≠-Q,则P+Q=(x3,y3)由以下确定:
x3≡λ2-x1-x2(mod p)
y3≡λ(x1-x3)-y1(mod p)
其中。
(3)椭圆曲线上的离散对数问题(ECDLP):
用E(GF§)表示定义在有限域GF§上椭圆曲线E的有理子群,设任意两点P,QE (GF§)。求使kP=Q成立的k值问题就是E上的椭圆曲线离散对数问题。

三、实验要求

编程求解椭圆曲线上的离散对数问题,主要包括椭圆曲线上的加法函数,乘法逆元的求解,以及验证点是否在椭圆曲线上等。

四、实验内容

GF(29)上曲线E:y2=x3+4x+20 (mod p);E上两点P=(13,23),Q=(3,28)。编程求解k使满足kP=Q。

五、 源代码

// 密码学08.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <iostream>
using  namespace std;
int qx ;
int qy ;class Point{
public:Point(int a, int b):px(a),py(b){}int getx(){ return px; }int gety(){ return py; }Point add(Point p2);
private:int px, py;
};int x, y, q;
int func(int a, int  b){if (b == 0){x = 1; y = 0; q = a;}else{func(b, a%b);double t = x;x = y; y = t - a / b*y;}return y;//y是 b mod a的逆元 不保证y在一定范围内
}
Point Point:: add(Point p2){int x1 = px;int y1 = py;int x2 = p2.getx();int y2 = p2.gety();int r = 0;int x3 = x1, y3 = y1;if (x1 == x2&&y1 == y2){int ni = func(29, 2 * y1);while (ni<0){ni += 29;}r = ((3 * x1*x1 + 4)*ni)%29;}else{int x21 = x2 - x1;while (x21 < 0){ x21 = x21 + 29; }int ni = func(29, x21);while (ni<0){ni += 29;}r = ((y2 - y1)*ni)%29;}x3 = (r*r - x1 - x2);while (x3 < 0 || x3 >= 29){if (x3 < 0){ x3 = x3 + 29; }else{ x3 = x3 - 29; }}y3 = (r*(x1 - x3) - y1);while (y3< 0 || y3 >= 29){if (y3 < 0){y3 = y3 + 29; }else{ y3= y3 - 29; }}return Point(x3, y3);}
int qiuk(){Point p(13, 23);Point pp = p;for (int i = 0;; i++){if (pp.getx() == 3 && pp.gety() == 28){return (i + 1);}pp = pp.add(p);}
}
int _tmain(int argc, _TCHAR* argv[])
{cout << "曲线E:y2=x3+4x+20 (mod 29)" << endl;cout << "点P=(13,23),Q=(3,28)" << endl;cout << "满足kP=Q的k是:" << endl;cout <<qiuk()<<endl;return 0;
}

实现椭圆曲线上离散对数问题的求解相关推荐

  1. 椭圆曲线离散对数问题以及求解

    椭圆曲线定义 设Fp 表示具有p个元素的有限域,p > 3为一个素数.椭圆曲线上的有理点集合E(Fp)定义为 判别式 = 4a3 + 27b2 != 0(平滑无奇点) 点的加法 设E(Fp)上两 ...

  2. 公钥密码系统主要依赖的三种数学难题:1.大整数因子分解问题 2.离散对数问题 (DLP问题) 3. 椭圆曲线上的离散对数问题(ECDLP)

    公钥密码系统主要依赖下面三种数学难题 1.大整数因子分解问题,如 RSA 系统 1.数理 2.流程 2.离散对数问题 (DLP问题) 1.数理: 2.流程:(EIGamal 公钥系统) 3. 椭圆曲线 ...

  3. matlab有限域多项式除法_椭圆曲线密码学简介(二):有限域的椭圆曲线及离散对数问题...

    本文主要翻译自这篇文章 译者注 ★ 本文承接上文所讨论的椭圆曲线,并将曲线的定义域从实数域缩小到了有限域,引出离散对数问题 " ★ 首先介绍了有限域的定义,并给出了一种基于模运算的有限域 & ...

  4. 椭圆曲线上的群和构造方法

    实数域上的群   什么是椭圆曲线?   椭圆曲线是点的集合.一般由方程y2=x3+ax+b,4a3+27b2≠0y^2 = x^3+ax+b,4a^3+27b^2\neq0y2=x3+ax+b,4a3 ...

  5. NVIDIA GPU上的直接线性求解器

    NVIDIA GPU上的直接线性求解器 NVIDIA cuSOLVER库提供了密集且稀疏的直接线性求解器和本征求解器的集合,它们为计算机视觉,CFD,计算化学和线性优化应用程序提供了显着的加速.cuS ...

  6. python 椭圆曲线加法_椭圆曲线上点的运算

    https://aaron67.cc/2020/09/26/ec-point-operation/ 对定义在有限域上的椭圆曲线 E = ( p , a , b , G , n , h ) E = (p ...

  7. OpenSSL密码库算法笔记——第5.4.1章 椭圆曲线上点的仿射坐标表示

    椭圆曲线上点的表示分成仿射坐标系表示和射影坐标表示形式,首先来看看仿射坐标表示形式. 素域Fp上的椭圆曲线E由(仿射)方程y2=x3+ax+b决定,设曲线上的两个点为P1=(x1,y1),P2=(x2 ...

  8. 生日攻击实现离散对数问题的求解(C++)

    !!!生日攻击是个概率性问题,以下代码可能只能实现部分离散对数求解问题,通过修改随机数种子可能会解决不同的问题- // BirthdayAttack.cpp : 定义控制台应用程序的入口点. //生日 ...

  9. 数学学渣必备!拍照上传,分步求解,微软解题神器拯救你

    整理 | Jane 出品 | AI科技大本营(ID:rgznai100) 在学好数学这条路上,很多同志前赴后继「死伤无数」,即便大家不断的寻求「场外救援」,可最终都逃不过一个字:难!两个字:真难!三个 ...

最新文章

  1. Linux之socket套接字编程20160704
  2. 神州数码与神州控股、神州信息共同主办首届技术年会,透露出什么信号?
  3. TIME_WAIT状态及存在原因
  4. Java之HashMap源码解析1
  5. 链表用java实现简单单链表linkedlist
  6. 由歌词引发的模式思考之下篇(模拟Spring的BeanFactory)
  7. plsql轻量版记录类型1
  8. 现在是小程序最好的时代
  9. 极光im php,极光IM- 微信小程序 SDK - 极光文档
  10. 分布式 | log4j2 漏洞修复方案
  11. Scrapy框架爬取百度新闻
  12. SSD-tensorflow Windows环境下,mAP的计算
  13. 医学影像后处理服务器系统,医学影像后处理的应用
  14. Dubbo之服务导入流程解析
  15. Windos环境下kafka配置启动Zookeeper时,报错:Invalid config, exiting abnormally.
  16. Processing摸索前行(9)-音频可视化
  17. 查找OpenJDK安装路径
  18. 【程序设计】定时任务调度平台需求说明书
  19. Windows10自带Ubuntu更换UI主题
  20. 脑网络分析软件丨Hermes 使用

热门文章

  1. 三种方法详解斐波那契数列
  2. 蒙古族传统圣火祭祀点燃新年祈福之旅
  3. 潍坊研发费用加计扣除与高新口径的区别。
  4. 用C语言来实现通讯录(顺序表结构)
  5. 深入分析游戏设计的8条原则
  6. 看图了解linux命令
  7. 邮件营销的低成本运营指南
  8. 图像平滑中“振铃”现象产生的原因
  9. phpcms模板解析php标签失败,phpcms模板解析嵌套标签解析失败
  10. 如何用EA优雅的画流程图