我的RSA算法适用于像"cat"这样的3个字母的单词,但是一旦单词变长,我会收到一条错误消息:异常:decipher2.hs:(37,1) - (62,19):非详尽的模式函数numToLet
我的程序按照以下步骤工作
用于加密
用于解密
我选择不包括计算关键部分,因为它是一个单独的程序,必须是正确的(因为短字可以被破译).我尝试使用较小的p和q值,但这也不起作用,是否有人知道为什么较长的单词不起作用(即使对于较小的素数)和/或我如何解决它?
我的加密代码是:
import Data.List
letToNum c'' = (let (Just n) = elemIndex c'' ['a'..'z'] in n) + 10
combine = foldl addDigit 0
where addDigit num i' = (10 ^ (floor $ log (fromIntegral i') / log 10 + 1))*num + i'
firstTwo xs = toInteger (combine (map letToNum xs))
p' = 2^2048 - 1942289
q' = 2^2048 - 2^1056 + 2^736 …Run Code Online (Sandbox Code Playgroud)