2014-11-23 68 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密鑰交換可以通過明文完成,但必須經過驗證/可信。當然,兩者的結合是可能的。