【发布时间】: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