C #: проблема Convert.ToBase64String - PullRequest
1 голос
/ 05 июля 2011

Я новичок в разработке на 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 ]

2 голосов
/ 05 июля 2011

Вы пытаетесь кодировать Base64 что-то, что уже закодировано в Base64:

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

Как уже упоминалось, вам нужно перейти ОТ база 64

1 голос
/ 05 июля 2011

Не следует, пожалуйста, взглянуть на эту статью Base64

Base64 не является представлением строки Ascii

0 голосов
/ 05 июля 2011

Разве это не тот случай, когда вы дважды его кодируете?

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

затем

byte [] plaintext_bytes = System.Text.Encoding.UTF8.GetBytes (незашифрованный текст);

(Я был немного медленным, и Крис С. заявляет это проще)

0 голосов
/ 05 июля 2011

Вы путаете здесь: Console.WriteLine, который вы используете, напечатает несколько байтов, а НЕ представление Base64 байтов.Base64 - это алгоритм преобразования, см. Ссылку выше.И да, используйте FromBase64String

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...