2014-11-23 83 views
0

据我所知,RSA是为整个公钥/私钥mumbojumbo设置的,但如果我不需要在线建立一个密钥,该怎么办?如何使用特定密钥设置.net RSA?

鲍勃和爱丽丝在一家酒吧见面并同意一个1024位数字。除了将消息从一个消息发送到另一个消息时,这个号码不会在任何地方重复。

是否可以使用.net中内置的RSA加密工具来促进该场景?我会想像它会这样下去

Dim encryptor as new something(ByteArrayContainingTheKey) 
Dim EncryptedBytes() as byte = encryptor.encrypt(NotEncryptedBytes) 

而另一种方式在另一端,简单的权利?然而,.net中有关RSA的所有材料都关注私钥/公钥,我不知道如何将其操作到更简单的状态。

回答

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密钥交换可以通过明文完成,但必须经过验证/可信。当然,两者的结合是可能的。