2009-10-27 129 views
1

我試圖設置一個簡單的服務器端RSA加密的一小塊信息是要在客戶端解密。就像概念證明一樣,我寫了幾行代碼來確保公鑰和私鑰可以從xml加載。不過,我努力讓我的機器上,即使是最簡單的東西的工作:C#RSA加密/解密拋出異常

byte[] bytes = Encoding.UTF8.GetBytes("Some text"); 
    bool fOAEP = true; 

    // seeding a public and private key 
    RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); 
    var publicKey = rsa.ToXmlString(false); 
    var privateKey = rsa.ToXmlString(true); 

    //server side 
    RSACryptoServiceProvider rsaServer = new RSACryptoServiceProvider(); 
    rsaServer.FromXmlString(privateKey); 
    var encrypted = rsaServer.Encrypt(bytes, fOAEP); 

    //client side 
    RSACryptoServiceProvider rsaClient = new RSACryptoServiceProvider(); 
    rsaClient.FromXmlString(publicKey); 
    var decrypted = rsaClient.Decrypt(encrypted, fOAEP); 

最後調用解密拋出一個帶有消息CryptographicException「而解碼OAEP填充時發生錯誤。」我必須在這裏錯過一些非常明顯的東西。我是否需要更多的rsa實例設置或者最初的rsa種子實例?

回答

6

您應該使用公鑰加密和私鑰解密。 看看這裏:RSACryptoServiceProvider decrypt with public key

現在,讓我們回到 的RSACryptoServiceProvider類。 加密方法僅使用 加密公鑰和解密方法 只使用私鑰解密。

+0

感謝尼古拉......我期待着這樣的東西:) – 2009-10-27 11:04:19

+0

:)不客氣。 – 2009-10-27 11:15:21