我現在使用一張電子證書 入面有公匙和私匙
先用公匙加密,代碼如下Byte[] plainTextByte = Encoding.UTF8.GetBytes("測試內容ABCDEFG123456");
X509Certificate2 myPublicKey = new X509Certificate2(@"D:\abcpublic.cer");
 RSACryptoServiceProvider myRSA1 = (RSACryptoServiceProvider)myPublicKey.PublicKey.Key;
byte[] Cryptograph = myRSA1.Encrypt(plainTextByte, false);
string Crypttext = Encoding.UTF8.GetString(Cryptograph);當把cryptograph 解密完完全可以解的, 但假設我先把cryptograph 變成string
再用byte[] ctext = Encoding.UTF8.GetBytes(Crypttext);之后再解密, 代碼如下:
X509Certificate2 myPrivateKey = new X509Certificate2(@"D:\cdeprivate.pfx", "privatepassword");
 RSACryptoServiceProvider myRSA2 = (RSACryptoServiceProvider)myPrivateKey.PrivateKey;
 byte[] plaintextByte = myRSA2.Decrypt(ctext, false); <-- 去到這里就說有問題 說:"資料錯誤"
  string Plaintext = Encoding.UTF8.GetString(plaintextByte);有沒有大大可以給一點意見?

解决方案 »

  1.   

    我懷疑問題是 cryptograph 當被encoding 之后 就有點不對..有沒有大大可以指証一下
      

  2.   

    http://blog.csdn.net/llwinnner/archive/2009/03/21/4011936.aspx
      

  3.   

    為何要把加佐密的byte 轉成string ,因為我要把byte 放入xml 那里儲存... 但當我從xml 讀回來 再轉回 byte 時 ,解密解不了
      

  4.   

    以前也遇到过类似问题,不使用Encoding类,使用Convert类的ToBase64String及FromBase64String方法
      

  5.   

    問題是 byte[] Cryptograph = myRSA1.Encrypt(plainTextByte, false);
    如何將cryptograph 變成string 儲存入txt file ...而從txt file 再讀回cryptograph 再把它變回byte  可以解密...?