提问者:小点点

原始RSA加密和解密使用Crypto


我正在使用原始RSA加密和解密。Crypto wiki中的教程和原始RSA开发一个简单的代码,使用RSA使用Crypto加密/解密字符串。

我正在使用Visual Studio 2010。代码运行没有错误。但是,我不明白n、e、d的意义是什么?为什么我不能改变它?

我尊重RSA的算法,我选择了这个值:

    // La clé publique est la paire (e, n) et la clé secrète est d, donc aussi p et q.
    // p = 3, q = 11, n = 3 x 11, f = (11–1).(3–1) = 20. On choisit d=7 (7 et 20 sont bien premiers entre eux).
    // e = 3 car e.d= 20 * 1 + 1

有人能帮我吗?


共1个答案

匿名用户

 // p = 3, q = 11, n = 3 x 11, f = (11–1).(3–1) = 20. On choisit d=7
 //    (7 et 20 sont bien premiers entre eux).
 // e = 3 car e.d= 20 * 1 + 1

这些参数是人为的小。可能太小了。

RSA的属性之一是消息大小必须小于模大小。3x11=33,即25(给予或接受)。所以您的消息必须小于5位。

Crypto以字节而不是位为单位指定消息大小。因此,您可能永远无法加密33取模以下的任何内容。

不幸的是,引用的wiki页面没有讨论size_in_bits(消息)

另外,这来自rsa. cpp

if (modulusSize < 16)
  throw InvalidArgument("InvertibleRSAFunction: specified modulus size is too small");

因此,您可能应该指定至少216大小的模数。216是65536。

最后,直到我们看到您的程序和错误消息的相关部分,这只是猜测。