我试图在 c#
中实现 rsa -algo用于学习目的我遇到的问题是我的一些随机创建的密钥无效。
一些细节:
我已经使用BigInteger类型来防止溢出等。
我检查了数学依赖性( p和n为Prims,e<!(N)和相对Prime和e> 1 )
我捕获了一些无效的密钥:
Prime numbers: p = 743 q = 37
Public key: e = 6371 N = 27491
Private Key: d = 524 >(N) = 26712
Prime numbers: p = 859 q = 47
Public key: e = 2239 N = 40373
Private Key: d = 647 >(N) = 39468
Prime numbers: p = 823 q = 29
Public key: e = 9173 N = 23867
Private Key: d = 1538 >(N) = 23016
Prime numbers: p = 719 q = 31
Public key: e = 1759 N = 22289
Private Key: d = 851 >(N) = 21540
Prime numbers: p = 149 q = 47
Public key: e = 1317 N = 7003
Private Key: d = 502 >(N) = 6808
Prime numbers: p = 859 q = 37
Public key: e = 9859 N = 31783
Private Key: d = 2790 >(N) = 30888
我错过了依赖吗? 或者它可能是我的代码内部或可能在C#内的东西?
这是扩展的Euclid的代码,而不是我的(http://amir-shenodua.blogspot.de/2012/06/extended-gcd-algorithm-extended.html)
这是我计算Prims的函数(http://pastebin.com/79Pvsxe8) 我将测试用例的随机数限制为100,我知道使用C#随机类是一种安全威胁。
这些是我的RSA功能(http://pastebin.com/2GxS9EDK)