Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net:在一个应用程序中加密字符串以使其只能被另一个应用程序读取的最佳实践是什么?_.net_Security_Encryption - Fatal编程技术网

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

.net:在一个应用程序中加密字符串以使其只能被另一个应用程序读取的最佳实践是什么?,.net,security,encryption,.net,Security,Encryption,我有一个应用程序(App1),它需要写出一个加密字符串。另一个应用程序(App2)需要能够解密和读取该字符串,并通过解密验证该字符串是否由App1加密。App2应该无法写出新的加密字符串 我知道这涉及到公钥/私钥对,但我不知道这方面当前的最佳实践技术是什么,我也不知道哪些.net类实现了它?我可以根据需要使用证书 欢迎您的任何意见 谢谢。App1和App2生成自己的私钥/公钥对并交换公钥对。然后,工作流程如下所示: App1 -> Data + App2-PublicKey = Encry

我有一个应用程序(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
现在,数据交换既安全又可靠(即,两个应用程序将确保与之通信的是另一个应用程序)。参考:


提醒:公钥用于加密,私钥用于验证。此外,签名步骤始终是最后一步,因为它是在最终处理的数据上完成的。

加密的数据是否只有App2才能读取?此外,这些信息的价值有多大?加密很容易出错-因此,如果这里涉及到重要的价值,请让理解它的人参与您的项目。要传输的数据是大还是小?加密的数据应该只能由App2读取,并且数据量很小。但是您错过了所需的验证步骤(和公钥/私钥的反向使用)为了确保数据源于App1-然后你陷入了加密然后认证、认证然后加密或加密和认证之间的经典争论,这并不明显。你也需要使用App-1密钥进行签名和验证,以确保文件已由App-1加密。而且,由于你不能直接使用密钥对数据进行签名,我建议您研究容器格式。PGP或CMS将是最明显的选择。如果您不想设置整个PKI,请使用PGP。