SAGE(SAGEMATH)密码学基本使用方法
生活随笔
收集整理的這篇文章主要介紹了
SAGE(SAGEMATH)密码学基本使用方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
求逆元
inv=inverse_mod(30,1373) print(30*inv%1373) #1擴展歐幾里得算法
d,u,v=xgcd(20,30) print("d:{0} u:{1} v:{2}".format(d,u,v))#d:10 u:-1 v:1孫子定理(中國剩余定理)
計算參考:
https://blog.csdn.net/destiny1507/article/details/81751168
求離散對數
2x2^x2x ≡≡≡ 131313 modmodmod 232323
x=discrete_log(mod(13,23),mod(2,23)) #或discrete_log(13,mod(2,23)) print(x)取模求根
x2x^2x2 ≡≡≡ 555 modmodmod 414141
x=mod(5,41) r=x.nth_root(22)歐拉函數
print(euler_phi(71)) #70輸出表達式近似值
result=pi^2 result.numerical_approx()素數分布(Pi(x))
π(x)x/In(x)\frac{\pi(x)}{x/In(x)}x/In(x)π(x)?
result=prime_pi(1000)/(1000/log(1000)) result.numerical_approx() #1.16050288686900創建整數域中的橢圓曲線
y2=x3+a4x+a6y^2=x^3+a_4x+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) 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的SAGE(SAGEMATH)密码学基本使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据库复习】第二章关系数据库
- 下一篇: 【笔记】公钥密码学之基于离散对数的密码体