如何解码从Base64到字节数组的文本字符串,以及获取此字节数组的字符串属性而不会损坏数据

好吧,我有一串文字,用Base 64编码,如下所示:

string myText = "abcBASE64TEXTGOESHEREdef=="; // actual string is 381 characters long with trailing '==' 

然后我将我的字符串从Base 64转换为字节数组,如下所示:

 byte[] decodedFromBase64 = Convert.FromBase64String(myText); 

此时,我想获取此字节数组的字符串值,并将其保存在文本文件中, 而不会丢失数据或损坏 。 下面的代码似乎没有这样做:

 string myDecodedText = Encoding.ASCII.GetString(decodedFromBase64); StreamWriter myStreamWriter = new StreamWriter("C:\\OpenSSL-Win32\\bin\\textToDecrypt.txt"); myStreamWriter.Write(myString); myStreamWriter.Flush(); myStreamWriter.Close(); 

有人可以告诉我哪里出错了。

编辑:输出不可读,我需要获取解码后的字符串然后使用OpenSSL解密它。 输出和OpenSSL的结果都在下面:

产量

OpenSSL的

如果字符串已编码,则内容看起来与文本文件中的内容非常相似。 但是为了确保文件没有损坏,您应该将文件内容写为二进制文件,而不是使用文本编码器。 查看File.WriteAllBytes() 。

 public static string base64Decode(string data) { byte[] toDecodeByte = Convert.FromBase64String(data); System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding(); System.Text.Decoder utf8Decode = encoder.GetDecoder(); int charCount = utf8Decode.GetCharCount(toDecodeByte, 0, toDecodeByte.Length); char[] decodedChar = new char[charCount]; utf8Decode.GetChars(toDecodeByte, 0, toDecodeByte.Length, decodedChar, 0); string result = new String(decodedChar); return result; } 
 static void Main(string[] args) { string completeUrl = SERVICE_URL; WebRequest request = WebRequest.Create(completeUrl); request.Credentials = CredentialCache.DefaultCredentials; WebProxy proxyObject = new WebProxy(SERVICE_URL, true); request.Proxy = proxyObject; HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse(); byte[] data; const int BUFFER_SIZE = 2048; int bytesRead; byte[] buffer = new byte[BUFFER_SIZE]; using (MemoryStream mss = new MemoryStream()) { using (BinaryReader readers = new BinaryReader(webResponse.GetResponseStream(), System.Text.Encoding.UTF8)) { while ((bytesRead = readers.Read(buffer, 0, BUFFER_SIZE)) > 0) { mss.Write(buffer, 0, bytesRead); } data = mss.ToArray(); System.Text.Encoding enc = System.Text.Encoding.GetEncoding("iso-8859-1"); string str = enc.GetString(data); XmlDocument xdoc = new XmlDocument(); xdoc.LoadXml(str); XmlNode xmlList = xdoc.ChildNodes[1]; XmlNode item = xmlList.ChildNodes[1]; //this is your data : JVBERi0xLjUNCiXNzc3NDQoxIDAgb2JqDQo8PA0KL0NyZWF0b3IgKERvY3VtZW50UHJ Base64Decode(item.InnerText.ToString()); Console.WirteLine("File successfully saved"); Console.ReadLine(); } } } public static void Base64Decode(string base64EncodedData) { var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData); File.WriteAllBytes("pdf.pdf", base64EncodedBytes); }