Python——验证椭圆曲线加密点乘运算

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,182元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
可观测监控 Prometheus 版,每月50GB免费额度
简介: Python——验证椭圆曲线加密点乘运算

00 前情提要

最近处于期末复习阶段,对于现代密码学这门学科来说,计算椭圆曲线加密的时候肯定得进行点乘运算。而这点乘运算呢,其实说难也不难,就是系数较大的时候,计算量比较大,得细心点。

而为方便检验自己的笔算结果呢,这里使用一个简单的python程序验证生点乘运算结果的正确性。


01 实现背景

image.png


02 实现源码

def ny(e,z): #求乘法逆元
    k=1
    e=e%z
    while((k*z+1)%e!=0):
        k=k+1
    d=int((k*z+1)/e)
    return d

def myfmod(a,b,c): #求分数的模
    a=a%c
    d=(a*ny(b,c))%c
    return d

def muchG(x,y,p,a): #同G
    if (3*pow(x,2)+a)%(2*y)==0:
        L=((3*pow(x,2)+a)/(2*y))%p
    else:
        L=myfmod(3*pow(x,2)+a,2*y,p)
    print("斜率L=%d"% L)
    x3= (pow(L,2)-2*x)%p
    y3= (L*(x-x3)-y)%p
    return x3,y3

def diffG(x1,y1,x2,y2,p): #异G
    if (y2-y1)%(x2-x1)==0:
        L=((y2-y1)/(x2-x1))%p
    else:
        L=myfmod((y2-y1),(x2-x1),p)
    print("斜率L=%d"% L)
    x3=(pow(L,2)-x1-x2)%p
    y3=(L*(x1-x3)-y1)%p
    return x3,y3

def tongG():
    a=int(input("请输入椭圆曲线的a:"))
    b=int(input("请输入椭圆曲线的b:"))
    p=int(input("请输入模数p:"))
    x=int(input("请输入生成元G的x坐标:"))
    y=int(input("请输入生成元G的y坐标:"))
    x3,y3=muchG(x,y,p,a)
    print("2G=(%d,%d)" % (x3,y3))
    f=input("按任意键继续")

def yiG():
    p=int(input("请输入模数p:"))
    x1=int(input("请输入P的x坐标:"))
    y1=int(input("请输入P的y坐标:"))
    x2=int(input("请输入Q的x坐标:"))
    y2=int(input("请输入Q的y坐标:"))
    x3,y3=diffG(x1,y1,x2,y2,p)
    print("P+Q=(%d,%d)" % (x3,y3))
    f=input("按任意键继续")

flag=1
while(flag!=0):
    print("1.同G")
    print("2.求异G")
    print("0.退出")
    flag=int(input("请选择:"))
    if flag==1:
        tongG()
    elif flag==2:
        yiG()



03 实现效果

在这里插入图片描述
通过以上描述,我们得知 p = 11, a = 1 , b = 6 ,x = 2 ,y =7 ,m = 7 ,现在已确认点乘运算 2(2,7)=(5,2),那么下面我们来验证python小程序的正确性。

image.png

验证成功~~~

目录
相关文章
|
3月前
|
数据采集 机器学习/深度学习 Web App开发
Python爬虫如何应对贝壳网的IP封禁与人机验证?
Python爬虫如何应对贝壳网的IP封禁与人机验证?
|
4月前
|
数据采集 前端开发 JavaScript
Python爬虫如何应对网站的反爬加密策略?
Python爬虫如何应对网站的反爬加密策略?
270 11
|
4月前
|
数据采集 存储 数据可视化
2025python实战:利用海外代理IP验证广告投放效果
本文介绍了如何利用Python结合海外代理IP技术,验证广告在不同国家的实际投放效果。通过模拟各地网络环境访问广告页面,检查内容是否与计划一致,并生成曝光报告。具体实现包括:获取高质量代理IP、使用Selenium或Playwright模拟用户行为、解析广告内容及生成可视化报告。案例显示,该方法能有效确保广告精准投放,优化策略并节省预算。
|
6月前
|
数据采集 文字识别 API
Python爬虫模拟登录并跳过二次验证
Python爬虫模拟登录并跳过二次验证
|
11月前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
346 3
python知识点100篇系列(15)-加密python源代码为pyd文件
|
10月前
|
机器学习/深度学习 存储 数据挖掘
Python 编程入门:理解变量、数据类型和基本运算
【10月更文挑战第43天】在编程的海洋中,Python是一艘易于驾驭的小船。本文将带你启航,探索Python编程的基础:变量的声明与使用、丰富的数据类型以及如何通过基本运算符来操作它们。我们将从浅显易懂的例子出发,逐步深入到代码示例,确保即使是零基础的读者也能跟上步伐。准备好了吗?让我们开始吧!
133 0
|
11月前
|
数据安全/隐私保护 Python
python学习十一:python常用模块使用,如 加密模块pyarmor,时间模块time等
这篇文章介绍了Python中两个常用模块的使用:加密模块pyarmor用于保护代码,以及时间模块time用于处理时间相关的功能。
470 0
|
11月前
|
数据安全/隐私保护 Python
Python中的MD5加密“解密”
Python中的MD5加密“解密”
297 0
|
11月前
|
安全 测试技术 Go
Python 和 Go 实现 AES 加密算法的技术详解
Python 和 Go 实现 AES 加密算法的技术详解
543 0
|
人工智能 Python 资源调度
Python计算&绘图——曲线拟合问题(转)
题目来自老师的课后作业,如下所示。很多地方应该可以直接调用函数,但是初学Python,对里面的函数还不是很了解,顺便带着学习的态度,尽量自己动手code。             测试版代码,里面带有很多注释和测试代码:   [python] view plain copy  ...
1462 0

推荐镜像

更多