簡體   English   中英

使用公鑰進行 RSA 加密

[英]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 的工作原理。 還是技術原因? 閱讀此處提供的示例以從技術上理解它。

您應該尋找的是如何正確地從服務器導出公鑰,並使用相同的公鑰加密客戶端中的某些內容。

正如您已經猜到的那樣, ExportParametersImportParameters看起來很有希望。 但是我無法通過 SMS 發送它(在我的項目中)。 所以我使用的是ExportCspBlobImportCspBlob 確保為 ExportCspBlob 指定false以便不包含私鑰信息。

要將其作為字符串發送,我要做的是 base64 對從 ExportCspBlob 返回的字節數組進行編碼。 要進行轉換,請使用 Convert class。 您特別尋找的方法是ToBase64StringFromBase64String

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM