我正在使用原始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
有人能帮我吗?
// 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。
最后,直到我们看到您的程序和错误消息的相关部分,这只是猜测。