簡體   English   中英

C#:Convert.ToBase64String 問題

[英]C#:Convert.ToBase64String problem

我是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)) ”的 output 是“ eHl6MTIz ”,而不是“ ZUhsNk1USXo= ”。

您正在嘗試對 Base64 編碼的東西已經 Base64 編碼:

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

如前所述,您需要 go FROM base 64

它不應該請看這篇文章Base64

Base64 不是字符串的 Ascii 表示

您在這里混淆了:您使用的 Console.WriteLine 將打印一些字節,而不是字節的 Base64 表示。 Base64 是一種轉換算法,見上面的鏈接。 是的,使用 FromBase64String

不就是您將其編碼兩次的情況嗎?

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

然后

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

(我有點慢,Chris S 說得更簡單)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM