【发布时间】:2011-12-28 22:06:42
【问题描述】:
自从在 comp sci 讲座中学习了春季密码后,我就决定学习 RSA 加密。 我掌握了 RSA 背后的想法(它非常聪明),但是在尝试编写自己的 C 程序来加密和解密字符串时遇到了一些问题。
我使用公钥加密每个字符的 ASCII 值,然后解密密文。但是,我发现有时我创建的公钥会将 ASCII 值加密为 0,然后无法将其解密为 0^anything = 0。 我在这里肯定是错的,因为二进制文件可以使用 RSA 加密/解密。
例如
- p = 3
- q = 5
- N = 15 (p*q)
- m = (p-1)(q-1) = 8
- e = 7(与 m 互质)
- d = 7 (7d(mod8) = 1 ... 在人们开始之前,我只使用 7,因为它对这个例子很方便(不是为了安全加密)
现在取字符“T”(ASCII 值 84)
运行加密,密文=0
0^7 (mod 8) = 0 ... 不是 84!
请有人指点我正确的方向。
提前致谢
【问题讨论】:
-
最明显的问题是您直接使用 RSA 加密字符串。您应该加密对称密码的密钥并使用该对称密码来加密消息。您还应该使用正确的填充。
-
您也只能将 RSA 应用于整数 0
标签: encryption rsa