日期:2014-05-18  浏览次数:21177 次

求一个用私钥加密,公钥解密的例子(RSACryptoServiceProvider)
如题,在网上找到一段代码有两个方法,加密是用公钥,解密用私钥,网上流传的不是“私钥加密,公钥解密”吗!很是困惑!
  public static string RSAEncryptString(string publicKey, string encryptString, bool isXml, bool is16)
  {
  try
  {
  using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
  {
  byte[] plainTextArray, cypherTextArray;
  if (isXml)
  rsa.FromXmlString(publicKey);
  else
  rsa.ImportCspBlob(Encoding.Default.GetBytes(publicKey));
  plainTextArray = (new UnicodeEncoding()).GetBytes(encryptString);//Encoding.Default.GetBytes(encryptString);
  cypherTextArray = rsa.Encrypt(plainTextArray, false);
.....

------解决方案--------------------
汗,看来阁下对公钥加密体制理解有误哈

我举两个例子。
1、公钥加密体制用于保密性时,就是公钥加密,私钥解密。 因为公钥是可以公开了, 那么任何人都可以使用公钥对信息进行加密,但是只有持有私钥的人才能正确解密。这样就保证了信息的保密性,因为只有私钥持有者才能正确解密。
2、公钥加密体制用于认证性时,比如数字签名,即私钥持有者对信息进行签名,验证者可以根据公开的公钥进行验证签名是否正确和有效,即实现了认证性,以及不可抵赖性。

不知道这样讲,LZ是否能理解
------解决方案--------------------
lz可以看一下这个:http://blog.csdn.net/gisfarmer/archive/2009/01/09/3740793.aspx
------解决方案--------------------
交换一下就可以了。

RSA可以生成一个密码对,其中一个是公钥一个是私钥。

加密用公钥,则解密需要私钥,加密用私钥,则解密用公钥。

所谓的公钥加密,私钥解密,一般是用于安全密码种子交换上的。

数字签名中,采用的是私钥加密,公钥解密验签。