.net:在一个应用程序中加密字符串以便只能被另一个应用程序读取的最佳实践是什么?

问题描述

| 我有一个应用程序(App1),它需要写出一个加密的字符串。另一个应用程序(App2)需要能够解密和读取该字符串,并通过解密来验证它是否已被App1加密。 App2应该不能写出新的加密字符串。 我知道这涉及公钥/私钥对,但是我不知道该领域当前的最佳实践技术是什么,也不知道哪个.net类实现了它?我可以根据需要使用证书。 任何输入表示赞赏。 谢谢。     

解决方法

        App1和App2生成自己的私钥/公钥对并交换公钥对。然后,工作流程如下:
App1 -> Data + App2-PublicKey = Encrypted Data
App2 -> Encrypted Data + App2-PrivateKey = Data
因此,App1或App2仅使用对方的公钥加密数据,以便只有应用程序才能使用对方的私钥对其进行解密。这样,数据交换是安全的。如果加密方式如下:
App1 -> Data + App1-PrivateKey + App2-PublicKey = Encrypted Data
App2 -> Encrypted Data + App1-PublicKey + App2-PrivateKey = Data
现在,数据交换既安全又可靠(即可以确保两个应用程序是与之通信的另一个应用程序)。参考:http://en.wikipedia.org/wiki/Transport_Layer_Security 提醒:公钥用于加密,私钥用于验证。同样,签名步骤始终是最后一步,因为它是在最终处理的数据上完成的。