[英]RSA (client side encryption/ server decryption)
這是該問題中項目的延續,但沒有充氣城堡。
因此,我決定取消Bouncy Castle(可惜,我喜歡這個名字)
無論如何
我有一個服務器和一個客戶端。 客戶端需要將序列化的對象發送到服務器,然后服務器將處理該對象。
它可以做到這一點,但是我想為該過程添加加密。 但是無需存儲文件或類似的東西。 該過程需要基於會話(在某種意義上)
因此,客戶端將向服務器請求密鑰,服務器將生成密鑰對並將密鑰發送給客戶端。
然后,客戶端使用此密鑰來加密對象
string key = ASCIIEncoding.ASCII.GetString(RequestKey(tcpclnt));
var RsaClient =new RSACryptoServiceProvider(2048);
while (key.Length > 0) {
RsaClient.FromXmlString(key);
var transmit = ASCIIEncoding.ASCII.GetBytes(stringtosend);
var encrypted = RsaClient.Encrypt(transmit,false);
服務器然后接收這些加密的字節並嘗試對其解密
raw = Receive(clientSocket);
byte[] r = TrimBytes(ASCIIEncoding.ASCII.GetBytes(raw),256);
var sdecrypted = ASCIIEncoding.ASCII.GetString(RsaServer.Decrypt(r, false));
但是可惜服務器無法做到這一點。 解密時會引發錯誤
Key does not exist.
所以,我的問題是,我在做什么錯?
在此先感謝您提供的任何幫助。
更新
更改了服務器中的代碼
var RSAKeyInfo = new RSACryptoServiceProvider(2048, new CspParameters(1)).ExportParameters(true);
新錯誤
The parameter is incorrect
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.