C# 如何将Base64中的文本字符串解码为字节数组,以及如何在不损坏数据的情况下获取此字节数组的string属性

C# 如何将Base64中的文本字符串解码为字节数组,以及如何在不损坏数据的情况下获取此字节数组的string属性,c#,.net,openssl,base64,C#,.net,Openssl,Base64,好的,我有一个文本字符串,用base64编码,如下所示: string myText = "abcBASE64TEXTGOESHEREdef=="; // actual string is 381 characters long with trailing '==' 然后,我将字符串从基64转换为字节数组,如下所示: byte[] decodedFromBase64 = Convert.FromBase64String(myText); 此时,我希望获取此字节数组的字符串值,并将其保存在文

好的,我有一个文本字符串,用base64编码,如下所示:

string myText = "abcBASE64TEXTGOESHEREdef==";  // actual string is 381 characters long with trailing '=='
然后,我将字符串从基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的输出和结果如下所示:


如果对字符串进行编码,则内容将与文本文件中的内容非常相似。但为了确保文件不会损坏,您应该将文件内容写入二进制文件,而不是使用文本编码器。退房。

你能提供更多关于哪里出了问题的信息吗?您是否收到例外情况?或者输出不可读?因此base-64字符串是另一个字符串的编码字节数组?字符串最初是使用ASCII转换成字节[]的吗?可能是使用了错误的编码?你能展示你得到了什么和你期望得到什么吗?你对原始数据了解多少?它真的是ASCII文本吗?
decodedFromBase64
数组的十六进制转储看起来如何?原始数据是一个使用我的RSA 3DES公钥加密然后在Base64中编码的人名。
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);
    }