C#:Convert.ToBase64String问题

时间:2011-07-05 11:05:34

标签: c# base64

我是C#开发的新手, 以下代码是Convert.ToBase64String问题, 我不知道如何解决它。

 byte[] str1Byte = System.Text.Encoding.UTF8.GetBytes("xyz123");
 String plaintext = Convert.ToBase64String(str1Byte);

 byte[] plaintext_bytes = System.Text.Encoding.UTF8.GetBytes(plaintext);
 Console.WriteLine("base64 plaintext: " + plaintext);
 Console.WriteLine("plaintext_bytes to String: " + 
                   System.Text.Encoding.UTF8.GetString(plaintext_bytes));
 Console.WriteLine("ToBase64String(plaintext_bytes) : " + 
                   Convert.ToBase64String(plaintext_bytes));

结果:

base64 plaintext: eHl6MTIz 
plaintext_bytes to String: eHl6MTIz 
ToBase64String(plaintext_bytes) : ZUhsNk1USXo= 

我希望“Convert.ToBase64String(plaintext_bytes))”的输出为“eHl6MTIz”,而不是“ZUhsNk1USXo=”。

4 个答案:

答案 0 :(得分:2)

您正在尝试Base64编码已经Base64编码的内容:

// plaintext_bytes = eHl6MTIz 
Console.WriteLine("ToBase64String(plaintext_bytes) : " + Convert.ToBase64String(plaintext_bytes));

如上所述,你需要去 FROM base 64

答案 1 :(得分:1)

不应该看看这篇文章Base64

Base64不是字符串的Ascii表示

答案 2 :(得分:0)

你在这里混淆:你使用的Console.WriteLine将打印一些字节,而不是字节的Base64表示。 Base64是一种转换算法,请参见上面的链接。 是的,使用FromBase64String

答案 3 :(得分:0)

难道只是你编码两次的情况吗?

byte [] str1Byte = System.Text.Encoding.UTF8.GetBytes(“xyz123”);

然后

byte [] plaintext_bytes = System.Text.Encoding.UTF8.GetBytes(plaintext);

(我有点慢,Chris S更简单地说明了这一点)