Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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
C# 从主密码生成RSA密钥_C#_.net_Encryption_Rsa - Fatal编程技术网

C# 从主密码生成RSA密钥

C# 从主密码生成RSA密钥,c#,.net,encryption,rsa,C#,.net,Encryption,Rsa,是否有一种简单且确定的方法可以根据用户的主密码生成RSA密钥对(私有和公共) 设想一个加密的messenger应用程序。在这里,用户希望使用自己的密码登录到不同的设备上,并且始终具有相同的私钥和公钥来发送和接收消息。因此,密钥应该只依赖于密码。可能在这里旁注:如果用户更改密码会发生什么?您可能不想这样做,因为您将把随机/伪随机密钥的材料转换为纯粹的确定性材料。然而,为什么不简单地在服务器端对用户进行身份验证(因为您将拥有一个正确的吗?),然后通过安全通道将密钥发送给他?我认为用户的密码可以被视为

是否有一种简单且确定的方法可以根据用户的主密码生成RSA密钥对(私有和公共)


设想一个加密的messenger应用程序。在这里,用户希望使用自己的密码登录到不同的设备上,并且始终具有相同的私钥和公钥来发送和接收消息。因此,密钥应该只依赖于密码。

可能在这里旁注:如果用户更改密码会发生什么?您可能不想这样做,因为您将把随机/伪随机密钥的材料转换为纯粹的确定性材料。然而,为什么不简单地在服务器端对用户进行身份验证(因为您将拥有一个正确的吗?),然后通过安全通道将密钥发送给他?我认为用户的密码可以被视为“随机”值。您还建议将用户私钥存储在云中。我宁愿它在用户的计算机上保持纯粹的本地性…用户的密码不是随机的-假设您没有为他们生成密码。此外,这种方法基本上将暴力攻击(RSA 2048;min/maj/num;max n chars)的可能性从2^2048增加到62^n。另外,如果两个用户拥有相同的密码,那么两个用户都将拥有相同的密钥,这样他们就可以解密彼此的消息——假设他们有权访问这些消息。为什么不简单地依赖https呢?是否要以加密方式存储邮件?您也可以像其他许多应用程序一样使用密码短语,但是您仍然需要以某种方式将密钥分发给用户。