IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 椭圆曲线上的加密算法——MV(Menezes-Vanstone)算法的具体实现 -> 正文阅读

[数据结构与算法]椭圆曲线上的加密算法——MV(Menezes-Vanstone)算法的具体实现

椭圆曲线上的加密算法——MV算法的具体实现

密码学实验课老师要求我们使用大数运算库实现椭圆曲线上的MV算法。最开始老师要求很笼统,什么多余的要求也没说,之前我们做过一个小数MV算法的实现,直观感觉就是把程序中的数据类型改一改,调一调就行了…越往后做才发现大模数下的椭圆曲线算法没有想象的那么简单

1.椭圆曲线概述

这部分先鸽了

推荐大家阅读椭圆曲线密码学原理分析这篇博客,写的非常详尽,里面也有椭圆曲线在密码学的应用

2.MV算法流程

MV算法全称是Menezes-Vanstone公钥密码体制,顾名思义,是由Menezes和Vanstone两人提出的应该没有人关心吧

MV算法是ElGamal公钥加密算法的变种,大概就是ElGamal在椭圆曲线上的一种表现形式,两者的核心是一样的。

密码学MV

我们学校使用的这本密码学课本对MV的具体实现做作了详细的描述具体的算法实现因为临近期末,鸽了。。

3.miracl库下的椭圆曲线方程常用函数

此处参考了博客miracl库下椭圆曲线方程常用函数使用入门

1)椭圆曲线方程初始化
void ecurve_init(big A,big B,big p,type);

其中A,B,P为椭圆曲线 y 2 = x 3 + a x + b y^2=x^3+ax+b y2=x3+ax+b??(其中 4 a 2 + 27 b ≠ 0 4a^2+27b\neq0 4a2+27b?=0??)

2)初始化点
epoint* epoint_init()

当定义 e p o i n t epoint epoint?后?需要使用这个函数初始化

3)点乘
void ecurve_mult(big k,epoint* G,epoint *P)

返回值为 P = k G P=kG P=kG?( P , G 为 椭 圆 曲 线 上 的 点 P,G为椭圆曲线上的点 P,G线?)?

4)点的加法
void ecurve_add(epoint* P,epoint* Q)

返回值为 Q = P + Q ( 椭 圆 曲 线 上 的 加 法 运 算 ) Q=P+Q(椭圆曲线上的加法运算) Q=P+Q线

5)点的减法
void ecurve_sub(epoint *P,epoint *Q)

返回值为 Q = Q ? P ( 椭 圆 曲 线 上 的 运 算 ) Q=Q-P(椭圆曲线上的运算) Q=Q?P(线)

6)比较椭圆曲线上两点是否相同
bool epoint_comp(epoint *P,epoint *Q)

比较 P P P?和 Q Q Q?是否相同,相同返回 t r u e true true?,否则为 f a l s e false false

7)释放点内存
void epoint_free(epoint *p)
8)设置点坐标,若属于当前方程则返回True,不满足当前方程返回False
bool epoint_set(big x,big y,lsb,epoint *p)

l s b lsb lsb作为 y y y的最低有效位我也不知道是啥,我填0

9)从 e p o i n t epoint epoint结构体中取出点坐标赋给给x、y
int epoint_get(epoint *p,big x,big y)
10)是否为无穷远点
bool point_at_infinity(epoint *p)

4.MV算法实现具体代码

先鸽了

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-24 18:44:08  更:2021-12-24 18:44:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 16:42:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码