2008-10-09 2 views
0

У меня есть строка .NET, которая представляет собой кодированное Base64 представление массива зашифрованных байтов. Он производится так:Использование FromBase64Transform с помощью CryptoStream?

String Encrypt(String message) 
{ 
    CryptoStream cryptostream = ... 
    StreamWriter stream = new StreamWriter(cryptostream); 
    ... 
    return Convert.ToBase64String(...); 
} 

Теперь я хочу, функция дешифрования как

String Decrypt(String cypher) 
{ 
    TextReader reader = new StringReader(cypher); 
    byte[] buffer = new byte[ cypher.Length ]; 
    for(int i = 0; i < cypher.Length; ++i) 
    { 
     buffer[ i ] = (byte) reader.Read(); 
    } 
    FromBase64Transform transformer = new FromBase64Transform(); 
    MemoryStream raw = new MemoryStream 
    ( 
     transformer.TransformFinalBlock(buffer, 0, buffer.Length) 
    ); 
    ... 
} 

Есть ли способ использовать FromBase64Transform непосредственно с CryptoStream (как следует из документации .NET), вместо вручную преобразовать строку в байты, затем вручную декодировать байты и, наконец, дешифровать декодированные байты?

ответ

1

Я всегда класс Convert, чтобы преобразовать строку в массив байтов.

Пример:

public static string DeCryptString(string s) { 
     byte[] b = System.Convert.FromBase64String(s); 

     using (MemoryStream ms = new MemoryStream(b)) 
     using (CryptoStream cs = /* Create decrypting stream here */) 
     using (StreamReader sr = new StreamReader(cs)) { 
      string buf = sr.ReadToEnd(); 
      return buf; 
     } 
    } // DeCryptString 
+0

На самом деле, поток памяти может быть инициализирован непосредственно с помощью байтового массива, возвращаемого Преобразовать в этом примере. Это позволяет избежать вызовов на запись и поиск. – 2008-10-11 01:26:04

0

Существует нет общедоступного встроенного способа для потоковой передачи из строки с .NET 3.5.

Вы можете реализовать простой класс StringStream, который наследует от Stream, что освободит вас от необходимости преобразовывать строку в массив байтов.

Смежные вопросы