2016-07-29 6 views
0

Ich habe eine JSON-Zeichenfolge, die ich als verschlüsselten Stream in Web-API in HttpResponseMessage zurückgeben muss. Der Client empfängt dann den verschlüsselten Datenstrom und entschlüsselt ihn so.Wie verschlüsselte Stream in Web API zurückgegeben werden?

private string str(HttpWebResponse AStream) 
{ 
    string result; 
    using (Stream responseStream = AStream.GetResponseStream()) 
    { 
     result = DecryptAesStream(responseStream, Key); 
     return result; 
    } 
} 

Muss ich zuerst die JSON-Zeichenfolge verschlüsseln, um es zu einem Filestream laden, aber dann, wie ich zurückkehren es in HttpRepsonseMessage da es String als Inhalt nimmt? Irgendwelche Hinweise, was ich tun muss?

+0

Sie wollen versuchen, ein Byte-Array zurück. – SLaks

+0

Wenn Sie aus irgendeinem Grund eine Zeichenfolge zurückgeben müssen, da das Ergebnis eines Verschlüsselungsalgorithmus ein Byte-Array ist, müssen Sie es verschlüsseln. Hierfür wird häufig die Base64-Codierung verwendet. Denken Sie daran, dass es auf der Empfängerseite für den Entschlüsselungsalgorithmus in ein Byte-Array decodiert werden muss. – Kevin

Antwort

1

Sie können so etwas wie dieses

 public byte[] GetEncryptedStream(string jsonData) 
     { 
      byte[] dataBytes = System.Text.Encoding.UTF8.GetBytes(jsonData); 
      byte[] key = null;//GetKey() //I am assuming you arealy have your Key 
      //Call your encrypt function below 
      byte[] encryptedDataBytes = encrypt(dataBytes, key); // I am assuming your function returns byte array 
      return encryptedDataBytes; 
     } 

     public HttpResponseMessage GetHttpResponseMessage() 
     { 
      var result = new HttpResponseMessage(System.Net.HttpStatusCode.OK); 
      String jsonString = "your json data"; 
      byte[] data = GetEncryptedStream(jsonString); 
      result.Content = new ByteArrayContent(data); 
      return result; 
     } 
+0

Danke. Wie implementiere ich den GetEncryptedStream? Meine Verschlüsselungsfunktion nimmt Daten als Byte: encrypt (byte [] data, byte [] Schlüssel) – JohnM

+0

Siehe aktualisierte Antwort oben .. Ich weiß nicht, was Ihre Verschlüsselungsfunktion zurückgibt, also nehme ich an, dass es Byte zurückgibt [] – Paresh

+0

Awesome! Ich danke dir sehr. Ich musste deinen Code etwas ändern, aber es half mir, mein Problem zu beheben. – JohnM

Verwandte Themen