2012-03-14 57 views
-1

我想写一个RSA程序来了解更多关于密码的知识。我正在使用Java,但我正在寻找一般性建议。更好的编程实践

我的问题是,采取文件内容的最佳方式是什么,并将其转换为双倍块以提升权力?

所以说我有一个ASCII文本文件,其中包含哈姆雷特的全文(或K & RC,或其他) 我将它转换为字节块,并提高整个块的权力。如果我提高每个字节的功率,它就容易受到频率分析的影响。

现在我将文件读取到一个字节数组中,转换为一个double数组,将其转换为大小为[64] [file/64]的2d double数组,并且对于2d数组中的每个double []连接所有的双打到一个字符串,将该字符串转换为双精度(或者它应该是一个整数?),然后做我的数学。

这非常复杂。

我可以做到这一点没有2D数组,但这似乎是一个更简单的方法来处理块,因为你不能在java中切片数组。 你不需要给我代码,但我正在寻找更好的架构。

回答

0

我会非常建议你看看其他的实现,并在进一步学习之前了解一下RSA,因为你现在很迷茫。你不应该使用双打,你不能把整个文本看作一个单一的数字。较大的文本始终首先使用对称密钥加密,然后使用RSA密钥对该密钥进行加密。单个RSA加密只能适合比模数小的数字 - 实际上由于填充而更少。

BigInteger将是一个不错的选择是的,它有一个很好的原因计算素数的方法。它使用数组作为后备实现(当然,Oracle JDK的确如此,但我认为其他Java实现也会使用long)。

+0

我不能把整个文本作为一个数,但如果我只是加密每个字节,这是很容易写一个程序来寻找模式 – Muricula 2012-03-15 04:30:23

+0

我不能把整个文本作为一个数字,但如果我只是对每个字节进行加密,这将会降至频率分析。我需要提高整体力量。另外,如果我要用AES等对称算法加密某些东西,那么RSA的重点是什么?我明白你对加密密钥的看法,但为什么不使用duffie hellman密钥交换? 我使用双打,因为它们是最大的原始数据类型。他们比长时间长。我想我很快就会为bigIntegers重做它,我开始很简单。你有关于其他实现的建议吗? – Muricula 2012-03-15 04:40:58

+0

关于编辑注释的默认时间戳 – Muricula 2012-03-15 04:41:20