Python——驗證密碼學常見運算

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 實現效果

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章