Python——验证密码学常见运算

    技术2023-06-28  80

    00 前情提要

    最近处于期末复习阶段,对于现代密码学这门学科来说,解题过程中经常出现几种运算的身影,其中包括整数模运算、分数模运算、乘法逆元运算等。

    而为方便检验自己的笔算结果,这里使用一个简单的python程序验证计算结果。

    01 实现背景

    先来简单举几个笔算的例子,既方便大家理解,也方便用于验证python脚本的正确性。

    整数模运算,如 2 mod 5 = 2

    分数模运算,如 1/3 mod 5 = 2

    乘法逆元运算,1 关于 6 的乘法逆元为 7

    02 实现源码

    import os 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=int(input("请输入分子:")) b=int(input("请输入分母:")) c=int(input("请输入模:")) g=a a=a%c d=(a*ny(b,c))%c print("分数%d/%d模%d的余数为%d"%(g,b,c,d)) f=input("按任意键继续") def mymod(): a=int(input("请输入整数:")) b=int(input("请输入模:")) print("整数数%d模%d的余数为%d"%(a,b,a%b)) f=input("按任意键继续") flag=1 while(flag!=0): print("欢迎使用密码学计算器") print("1.求整数模") print("2.求分数模") print("3.求乘法逆元") print("0.退出") flag=int(input("请选择:")) if flag==1: mymod() elif flag==2: myfmod() elif flag==3: a=int(input("请输入整数a:")) b=int(input("请输入整数b:")) print(f'{a}关于{b}的乘法逆元为{ny(a,b)}') f=input("按任意键继续") os.system('cls')

    03 实现效果

    Processed: 0.020, SQL: 9