根据我的理解,RSA是针对整个公钥/私钥mumbojumbo设置的,但如果我不需要在线建立密钥怎么办?
Bob和Alice在一家酒吧见面并同意一个1024比特的号码。除了加密要从一个消息发送到另一个消息的消息之外,这个号码永远不会重复。
是否可以使用.net内置的RSA加密工具来促进这种情况?我想它会像这样下去
Dim encryptor as new something(ByteArrayContainingTheKey)
Dim EncryptedBytes() as byte = encryptor.encrypt(NotEncryptedBytes)
另一方面,另一方面,简单吧?然而.net中关于RSA的所有材料都集中在私钥/公钥上,我不知道如何将它操纵到一个更简单的状态。
答案 0 :(得分:0)
您所谈论的是对称加密,其中只使用了一个密钥,这些密钥必须同时存在于两个(或更多)方。另请参阅Difference between asymmetric and symmetric encryption methods?
This question提供代码,但使用不推荐的ECB模式。您应该使用一些经过验证的模式,如GCM或CCM。在我看来API doesn't provide it,所以CBC模式应该与消息验证代码一起使用。 AES密钥可以是128,192或256位宽,这可能超出您的需要。
您当然可以通过RSA获得可比性,这可能会为您提供更大的灵活性。双方生成两个私钥/公钥对(一个用于加密,一个用于签名)。双方会面并交换他们的公钥或两个密钥对,以便验证密钥。现在你可以直接为另一个加密某些东西,或者你可以以某种方式建立一个短暂的对称密钥并使用hybrid encryption,或者你可以使用Diffie-Hellman key exchange建立一个短暂的对称密钥,然后使用密钥对这些密钥进行签名。明确生成签名。 Diffie-Hellman密钥交换可以在明确的情况下完成,但必须经过验证/真实。当然,两者的结合是可能的。