刚用c#做完rsa算法加密解密的程序,在n取40位大数的时候都慢的出奇。
原来在算a^b mod n,用的是先调用乘法,自乘b次,然后mod,这样简直连十几位都算不出来。后来看了一个快速a^b mod n方法,一试验果然快不少,但是在两个大质数取20位时还是得要十五秒才能算出私钥d。
请教一下怎么样才能提高效率呢?我用的是十进制算的。

解决方案 »

  1.   

    要运算效率高,得用加减移位与或异或这些运算来代替乘除等慢速运算rsa算法不了解,FCL中应该有吧?
      

  2.   

    看一下System.Security.Cryptography 命名空间
    里面有关于RSA的类~
      

  3.   

    rsa效率慢是出名的,当数值大了,会用到链表,读取数值会大大的影响效率
      

  4.   

    谢谢各位,用二进制位运算应该会很快。二进制的转换存储也是个问题,或许要写个结构体。
    现在做的p,q两质数都是50位的加密解密都要6分钟,导师说100位的pq才能安全,郁闷。
    同学用vc做的rsa算法,50位速度很快,2分钟就好了,但是到计算80位以上时就出现虚拟内存不足的提示。估计是算法没错,但有释放资源的问题。.NET好像可以自动释放资源~~
    虽然知道System.Security.Cryptography里有RSA类,自己做这个也是想了解实践下RSA算法具体实现的过程~~
      

  5.   

    最近刚学密码学,所以很关注RSA算法