2013-07-06 14 views
-2

我想使用混合加密技术,它涉及到AES技术以及用于加密数据块的RSA技术的组合。由于该技术涉及使用AES算法生成用于加密数据的随机密钥,并且随机密钥也是使用RSA算法通过公钥加密。但我很困惑这里使用什么算法来生成我的随机密钥和公钥。将使用单个密钥生成算法来生成随机密钥以及公钥?或者我应该使用两种不同的方法来生成这些键?请通过提供合适的解决方案来澄清我的困惑。什么方法或技术用于生成随机混合加密技术所需的随机密钥和公钥?

+0

欢迎来到Stackoverflow。本网站仅用于与编程直接相关的问题。这个问题属于crypto.stackexchange.com,但我建议你首先获得有关加密领域的更好的知识;你一定会犯错,否则可能很容易使你试图实现的安全无效。 –

回答

1

公钥/私钥对在数学上是相关的,因此需要一个显着不同的算法来生成它们。它们具有非常特定的属性,这也是为什么您需要这样一个大密钥(1024位或更多)才能拥有安全密钥。

对称密码(如AES)使用更短的密钥,因为密码不依赖密钥本身的任何特定数学属性。这就是为什么您只需使用AES的128位密钥即可获得良好的安全性。

通常,您所描述的体系结构使用AES与一次性随机会话密钥来加密批量数据,然后使用私钥加密AES会话密钥。公钥/私钥对提前生成并用于多条消息。会话密钥更改消息到消息。 (这是PGP背后的基本想法,我记得)。

如果你不明白这些元素之间的差异以及它们是如何使用的,我可能会建议你依赖已经被证实的软件,如GPG,PGP或基于它们的库?

+0

谢谢你的答案,但现在我只想知道在理论上生成这两个不同的键的算法,不要使用像GPG,PGP这样的软件。尽管我知道它们的工作原理是相同的,但我想要一些理论上的解决方案而不是实际的实施。 – goaround

+0

我应该使用伪随机数生成器算法先生成一个随机密钥,然后使用其他算法生成公钥? – goaround

+0

* public *键加密会话密钥。 @goaround您必须使用RSA密钥生成过程来生成RSA密钥对。 – EJP