Как распечатать байты в виде их символьного представления на C# так же, как это делает OpenSSL?C#

Место общения программистов C#
Ответить
Anonymous
 Как распечатать байты в виде их символьного представления на C# так же, как это делает OpenSSL?

Сообщение Anonymous »

Я пытаюсь воссоздать некоторые алгоритмы OpenSSL, и мне сложно распечатать зашифрованный результат для шифрования DES.
Я знаю, что мое шифрование работает, поскольку распечатываю результат в шестнадцатеричном формате или base64 дает мне тот же результат, что и OpenSSL. Моя проблема заключается в том, что я пытаюсь распечатать его так же, как это делает OpenSSL, просто, я думаю, печатая значения байтов в виде символов.
Например, выполнив эту команду:

Код: Выделить всё

echo "foo bar" | openssl des-cbc -K "0123456789ABCDEF" -iv "0123456789ABCDEF" -provider legacy -provider default | xxd
даст мне такой результат:

Код: Выделить всё

00000000: bcbf 295f 49a1 b714 6469 2be2 99c9 0dcb  ..)_I...di+.....
Но при запуске той же команды в моей программе:

Код: Выделить всё

echo "foo bar" | ./my_openssl des-cbc -k "0123456789ABCDEF" -v "0123456789ABCDEF" | xxd
Вместо этого я получу это:

Код: Выделить всё

00000000: efbf bdef bfbd 295f 49ef bfbd efbf bd14  ......)_I.......
00000010: 6469 2bef bfbd efbf bd0d efbf bd         di+..........
Как я уже сказал, мое шифрование работает правильно, поскольку при запуске обоих с флагом -a (который печатает результат в виде строки base64) я получаю одинаковый результат.
В настоящее время я вывожу результат на консоль, выполнив:

Код: Выделить всё

// result is a byte[] that stores my DES-CBC encryption result as bytes
Console.Write(Encoding.UTF8.GetString(result));
Как OpenSSL печатает результат? Это другая кодировка, чем та, которую использует консоль? Он делает что-то другое? Возможно ли это с помощью C#?
Спасибо за помощь!

Подробнее здесь: https://stackoverflow.com/questions/782 ... ay-openssl
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»