【问题标题】:RSA Asymmetric encryption / decryption - Which key is being usedRSA 非对称加密/解密 - 使用哪个密钥
【发布时间】:2018-02-02 20:43:57
【问题描述】:

当我使用以下代码创建公钥/私钥时:

    // Create the CspParameters object and set the key container   
    // name used to store the RSA key pair.  
    CspParameters cp = new CspParameters();
    cp.KeyContainerName = ContainerName;

    // Create a new instance of RSACryptoServiceProvider that accesses  
    // the key container MyKeyContainerName.  
    RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp);

如果我再打电话

    rsa.Encrypt (....
    OR
    rsa.Decrypt(..

我怎么知道正在使用哪个密钥。在每种情况下使用公钥还是私钥取决于应用程序。如何确定正在使用哪个?

【问题讨论】:

  • “在每种情况下使用公钥还是私钥取决于应用程序。” - 不,这是错误的。 RSA加密只能用公钥,用私钥解密。
  • @MartinBonner - 签名正好相反。 SignData() 使用私钥加密哈希。
  • 谢谢,这是完美的,也是我所希望的。
  • @Henk Kinda。一般来说,将“签名”视为“使用公钥加密”是错误的(尽管数字运算与 RSA 相同)。
  • 那为什么这样考虑是错误的呢? (而且你有一个公共/私人错字)。

标签: encryption rsa encryption-asymmetric


【解决方案1】:

加密使用公钥完成,解密使用私钥完成......因此只有私钥的持有者才能解密。

您不打算使用公钥进行解密,因此该界面没有为您提供执行此操作的方法。

签名使用使用私钥进行加密,使用公钥+某种单向哈希逻辑进行解密,但在这种情况下,接口只允许使用特定的签名方法(SignData(..) & VerifyData(..))。

【讨论】:

  • 您可能想要标记 OP 说“在每种情况下使用公钥还是私钥取决于应用程序”的句子。并指出它是错误的。
  • 谢谢,这是完美的,也是我所希望的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-08
  • 2018-01-09
相关资源
最近更新 更多