我是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=
”。
答案 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更简单地说明了这一点)