C#RSA私钥加密,公钥解密出错的原因






  1. RSA是不对称加密算法,公钥可能会被多人持有,而私钥只有一人拥有。公钥加密的信息,只有私钥才能解密,从而实现了数据可以的保密的到达拥有私钥的一方。即使被第三方截取,也无法解密。

  2. RSA算法指出私钥加密的信息,只有公钥可以解密。这就给我们实际编程过程中造成了误解,认为可以使用私钥加密,公钥解密。然而,加密时不出错,而解密时会收到“不正确的项”的错误。

  3. 其实.net中,处于安全的考虑,RSACryptoServiceProvider类,解密时只有同时拥有公钥和私钥才可以。原因是公钥是公开的,会被多人持有。这样的数据传输是不安全的。

  4. 其实私钥加密,公钥解密的用途是数字签名。数字签名是用于防篡改和防止假冒的,因为只有一人拥有私钥。甲方通过私钥对数据进行签名,乙方通过甲方的公钥验证签名,如果成功,说明确实是甲方发来的,并且数据没有被修改。RSACryptoServiceProvider类中提供了SignData和VerifyData方法来实现签名和验证签名。

  5. 这就是为什么RSACryptoServiceProvider类提供了Encrypt和Decrypt方法实现加密和解密,而我们通常只用公钥加密,私钥解密的原因。

你可能感兴趣的:(IT基础类,加密理论AES与RSA)