文章目录

  • 前言
  • sagemath用法
    • 1.sagemath计算离散对数
    • 2.sagemath求逆元
    • 3.sagemath扩展欧几里得算法
    • 4.sagemath孙子定理(中国剩余定理)
    • 5.sagemath求欧拉函数
    • 6.sagemath输出表达式近似值
    • 7.sagemath素数分布(Pi(x))
    • 8.sagemath创建整数域中的椭圆曲线
  • python z3库

前言

网鼎杯划水,害,3人组队结果我pwn拖了后腿…没能进下线了。 一手封神榜抬进了线下…
比赛过程做了两题Crypto,写个博客记录一下sagemath和python中z3库的用法。

sagemath用法

1.sagemath计算离散对数

离散对数问题可以描述为:给定一个质数p,和有限域Zp上的一个本原元a,对Zp上整数b,寻找唯一的整数c,使得a^c≡b(mod p)。一般的,如果仔细选择p,则认为该问题是难解的,且目前还没有找到计算离散对数问题的多项式时间算法。为了抵抗已知的攻击,p至少应该是150位的十进制整数,且p-1至少有一个大的素数因子。

RSA是基于大整数分解难题来保证算法安全性,RSA算法的安全性要远小于离散对数的安全性。
但是在求解上,二者有一些相同的地方。

简单来说,a^c≡b(mod p),在离散对数问题中,求的是c。但是在RSA中,就是要求a。
2x≡13mod232^x≡13mod23\quad 2x≡13mod23

x=discrete_log(mod(13,23),mod(2,23))
#或discrete_log(13,mod(2,23))
print(x)

2.sagemath求逆元

a∗b≡1(modp)a∗b≡1(modp)a∗b≡1(modp)

b=inverse_mod(a,p)
print(a*b%p) #1
print(b)#求逆元

3.sagemath扩展欧几里得算法

扩展欧几里得算法:给予二整数 a 与 b, 必存在有整数 x 与 y 使得ax + by = gcd(a,b).

−1∗20+1∗30=gcd(20,30)=10.-1*20 + 1*30 =gcd(20,30)=10.−1∗20+1∗30=gcd(20,30)=10.

d,u,v=xgcd(20,30)
print("d:{0} u:{1} v:{2}".format(d,u,v))#d:10 u:-1 v:1

4.sagemath孙子定理(中国剩余定理)

孙子定理

在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?”这个问题称为“孙子问题”,该问题的一般解法国际上称为“中国剩余定理”。

def chinese_remainder(modulus, remainders):Sum = 0prod = reduce(lambda a, b: a*b, modulus)for m_i, r_i in zip(modulus, remainders):p = prod // m_iSum += r_i * (inverse_mod(p,m_i)*p)return Sum % prod
chinese_remainder([3,5,7],[2,3,2]) #23

5.sagemath求欧拉函数

print(euler_phi(71)) #70

6.sagemath输出表达式近似值

result=pi^2
result.numerical_approx()

7.sagemath素数分布(Pi(x))

xIn(x)π(x)\frac {x}{In(x)π(x)}In(x)π(x)x​

result=prime_pi(1000)/(1000/log(1000))
result.numerical_approx() #1.16050288686900

8.sagemath创建整数域中的椭圆曲线

y2=x3+a4​x+a6y ^2 =x^3+a^4​x+a^6y2=x3+a4​x+a6

输出所有整数点:

a4=2;a6=3;F=GF(7);
E=EllipticCurve(F,[0,0,0,a4,a6])
print(E.cardinality()) #6
print(E.points()) #[(0 : 1 : 0), (2 : 1 : 1), (2 : 6 : 1), (3 : 1 : 1), (3 : 6 : 1), (6 : 0 : 1)]

创建点:

point1=E([2,1])
point2=E([3,6])
print(point1+point2)#(6 : 0 : 1)
print(point1-point2)#(2 : 6 : 1)

sagemath在密码学中的使用方法
sagemath安装
sagemath在线环境


python z3库

我搞z3库搞了一晚上…
z3库不是微软开发的吗?怎么windows上配置老是出错…
我pip和微软推出的dll方式都试过了,一个是pip报错,另外一个是配置环境变量报错…
windows下安装Z3
于是转向kali linux 安装z3
linux下安装z3

git clone https://github.com/Z3Prover/z3.git
cd z3
python scripts/mk_make.py
cd build
make
sudo make install

这个安装好之后是这样的

然鹅我想作为python的模块使用
下载z3_solver-4.8.7.0-py2.py3-none-manylinux1_x86_64.whl文件之后

链接:https://pan.baidu.com/s/17jMA50B-oSdcj2nwsgL0aA
提取码:uhu3

python3 -m pip install z3_solver-4.8.7.0-py2.py3-none-manylinux1_x86_64.whl

密码学|离散对数问题、计算量较大的二次方程求解(sagemath与python z3库的使用)相关推荐

  1. python爬虫和数据分析电脑推荐_大数据分析必备的5款Python爬虫库

    在数据科学或人工智能领域,除了算法之外,最重要的应该是数据了.甚至可以说一个模型到最后决定其准确度的往往不是算法而是数据.在现实中,缺少足够的数据成了数据分析师获得优秀模型的主要阻碍.可喜的是,现在网 ...

  2. C#编写大计算量程序总是报内存溢出System.OutOfMemoryException的重要原因

    笔者为C#业余爱好者,从开始编写一些计算量较大.内存占用较大的程序时,经常会在编译时报出System.OutOfMemoryException(内存溢出)的错误异常,而实际上,当时的剩余内存还多的是, ...

  3. fft 相位谱_数值积分——使用FFT来降低计算量

    问题引入: 我们考虑如下积分的数值计算问题 我们假定 是有界的,因为 的快速下降性,我们知道上述积分的主要贡献来自于 这样的一个邻域(当然, 只是一个示例.) 因此,我们可以采用复合梯形公式来数值求解 ...

  4. 关于mmdetection、mmrotate如何计算参数量、计算量和速度FPS

    近几天跑完实验后,发现效果还是不错,于是开始进行模型的参数量.计算量和速度指标的计算对比,话不多说,直接上干货. ------------------------------------------- ...

  5. python计算最大公约数函数_python如何求解两数的最大公约数

    题目: 给定两个自然数,求这两个数的最大公约数. 分析: 单看题目的话,非常简单,我们可以循环遍历自然数,如果能够整除两个自然数,就把这个数记下来,在这些记录中找到最大的一个. 但是这样做有几个缺点: ...

  6. 腾讯大数据回答2019:鹅厂开源先锋,日均计算量超30万亿,全力打破数据墙

    乾明 发自 腾讯汇  量子位 报道 | 公众号 QbitAI 开源,开源,开源. 这就是腾讯2019年技术领域最直观的变化. 最新代表事件,来自于腾讯首个开源的AI项目Angel,完成3.0版本进化后 ...

  7. AAAI 2019 | 自动机器学习计算量大!这种多保真度优化技术是走向应用的关键

    机器之心编辑 作者:Yi-Qi Hu, Yang Yu, Wei-Wei Tu, Qiang Yang, Yuqiang Chen , Wenyuan Dai 参与:路雪 自动机器学习一直以来都以计算 ...

  8. ​多大分辨率图像做分类更适合?浙大华为国科大等提出Dynamic Resolution Network,降低计算量还提性能!...

    关注公众号,发现CV技术之美 ▊ 写在前面 为了获得更高的精度,深卷积神经网络(CNN)通常具有复杂的设计,具有许多卷积层和可学习的参数.为了减轻在移动设备上部署网络的成本,最近的工作开始研究在预定义 ...

  9. 腾讯云公布大数据平台最新数据,日实时计算量超40万亿

    9月11日,在2020腾讯全球数字生态大会上,腾讯云副总裁刘煜宏透露,腾讯云大数据平台的算力弹性资源池达500万核,每日分析任务数达1500万,每日实时计算次数超过40万亿,能支持超过一万亿维度的数据 ...

  10. 300秒搞定第一超算1万年的计算量,量子霸权时代已来?

    (由AI科技大本营付费下载自视觉中国) 作者 | 马超 责编 | 郭芮 来源 | CSDN 博客 近日,美国航天局(NASA)发布了一篇名为<Quantum Supremacy Using a ...

最新文章

  1. Dalvik中类的加载
  2. mac14.5 mojave安装错误
  3. 如何查看经过iOS优化的PNG图片
  4. Listview点击事件
  5. nebula如何实现用in实现any(x,y,z)的效果
  6. 【机器学习】 ID3,C4.5,CART决策树
  7. c语言线程经常段错误的是,由pthread_create引起的段异常
  8. 解决MacOS升级后出现xcrun: error: invalid active developer path, missing xcrun的问题
  9. hua图软件 mac_CAD迷你画图for Mac-CAD迷你画图Mac版下载 V3.3.6-PC6苹果网
  10. RNA-Seq丰度计算方法
  11. Cloudflare DDNS梅林插件代码
  12. Could not found global transaction xid
  13. 华为2020秋招笔试试题
  14. 固态硬盘的计算机需要进行磁盘碎片整理吗,浅析为什么固态硬盘不需要磁盘碎片整理...
  15. 又一微信自动化框架wxauto横空出世了!
  16. thinkpad x250装黑苹果教程_ThinkPad E450c 傻瓜式黑苹果一键安装教程
  17. Python获取抖音视频链接
  18. 一些热门的前端UI组件库(附用例)
  19. 【毕业设计】基于单片机的门禁系统 - 嵌入式 物联网
  20. C Primer Plus(第六版)第十六章 编程练习答案

热门文章

  1. 图相关论文阅读与总结
  2. 团队成立——Microhard
  3. OGRE实现天龙八部组合的骨骼动画
  4. 使用jqery模拟网易严选购物车功能
  5. Python3图片中竖排文字
  6. LeetCode 247. 中心对称数
  7. (软考)图示法求候选键,及快捷求候选键,和数据库模式分解的表格法,及无损连接分解的快捷判别方法
  8. C++[USACO06NOV] Fence Repair G合并果子
  9. 【Love2d从青铜到王者】第十二篇:Love2d之碰撞检测(Detecting collision)
  10. 计算机用户密码开机设置,计算机开机密码和屏保密码设置指南