[英]RSA Encrypt with Public Key
大家好,我正在構建客戶端/服務器會議系統
我有一個問題“無法將類型'string'隱式轉換為'System.Security.Cryptography.RSAParameters'”
我會快速解釋這個過程
我收到了服務器回復(公鑰),但是當我嘗試使用 RSA 加密時,出現了上面的錯誤
這是我的代碼:
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
// mess is Server response as string
RSAParameters publickey = mess;
rsa.ImportParameters(publickey);
byte[] encryptedData = rsa.Encrypt(StringToByte(uname.Text + "|||" + PUBKEY), true);
首先, ImportParameters () 不接受字符串。 它期待RSAParameters
類型的東西。 它不能將字符串隱式轉換為 RSAParameter object,這就是顯示錯誤的原因。
我相信您還沒有從根本上理解 RSA 的工作原理。 還是技術原因? 閱讀此處提供的示例以從技術上理解它。
您應該尋找的是如何正確地從服務器導出公鑰,並使用相同的公鑰加密客戶端中的某些內容。
正如您已經猜到的那樣, ExportParameters和ImportParameters看起來很有希望。 但是我無法通過 SMS 發送它(在我的項目中)。 所以我使用的是ExportCspBlob和ImportCspBlob 。 確保為 ExportCspBlob 指定false
以便不包含私鑰信息。
要將其作為字符串發送,我要做的是 base64 對從 ExportCspBlob 返回的字節數組進行編碼。 要進行轉換,請使用 Convert class。 您特別尋找的方法是ToBase64String和FromBase64String
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.