【发布时间】:2013-04-16 05:47:52
【问题描述】:
正在寻找一些关于如何将大整数值转换为 ascii 字符字符串的帮助;
在使用 RSA 加密/解密完成一些工作后,我将这个 140472961968666030223 解密为消息,现在我需要将其转换为一串 ascii 字符。我找到了这种将一串 ascii 字符转换为大整数的方法,但我一生都无法弄清楚如何反转该方法。
注意:对于 8 个字符的块,结果整数也可以通过以下方式计算:
R= c7 * 2567 + c6 * 2566 + c5 * 2565 + c4 * 2564 + c3 * 2563 + c2 * 2562 + c1 * 256 + c0 * 1
所以我可以看到如果你知道那些字符或其他东西很容易撤消,但在这种情况下,我只有那个 BigInteger,我怎么知道要取出什么(比如什么块)以及在哪里他们走了?)
如果有人有更好的方法,请拍摄,因为这不是很有希望!
谢谢!
【问题讨论】:
-
加密的结果通常是
byte[],而不是BigInteger。你在滚动你自己的加密代码吗?这几乎总是一个坏主意。 -
好吧,我得到了一个大整数作为密文,所以在使用 rsa 解密后,它类似于 Code^Private key mod n ;;是的,这给了我另一个整数
-
所以 byte[] 被加密的事实并不重要,您只想知道如何将 byte[] 转换为 BigInteger 以及执行此操作的构造函数对您不起作用?
-
使用 RSA 时,您需要使用适当的填充方案。 PKCS #1 定义了这样的方案(特别是 OAEP),它还定义了如何在字节和大整数之间进行转换。而且您不应该将普通的 BigInteger 类用于私钥操作。这打开了巨大的侧通道,允许攻击者测量您的解密需要多长时间才能恢复您的私钥。
标签: java encryption integer rsa