對于作業,我需要撰寫兩個函式,一個用于 RSA 加密,一個用于解密。這些函式將密鑰對和模數作為引數。
rsaencrypt :: (Integer, Integer) -> Integer -> Integer
rsaencrypt (e, m) x = x^e `mod` m
rsadecrypt :: (Integer, Integer) -> Integer -> Integer
rsadecrypt (d, m) x = x^d `mod` m
假設我們有模數為 91 的密鑰對 (5, 29)。如果我們想加密數字 75,我們得到密文 17,如果我們解密 17,我們得到 75。到目前為止一切都很好。但是當我嘗試不同的數字時,比如說 97。我們得到密文 41,如果我們解密 41,我們得到 6。為什么我的函式只適用于某些數字?
uj5u.com熱心網友回復:
查看 的定義rsadecrypt:
rsadecrypt (d, m) x = x^d `mod` m
應該清楚的是,所有輸出都將介于0和m-1(包括)之間。由于解密肯定位于該范圍內,因此您無法為該范圍之外的任何訊息創建加密,這些訊息將完全往返。
...并且,連接最后兩個點,97超出0to的范圍91-1,因此無法正確加密(對于“正確”的定義)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/445996.html
上一篇:檢查二維陣列中的鄰居時出錯
