2012-06-06 2 views
0

Почему C#'s tobase64string конвертирует «a46fb104c5ea2fd65df3909f4c5ea2fd65df3909f4c5ba4191c2eb4e5» в строку с 56 символами, а следующий сайт: http://tomeko.net/online_tools/hex_to_base64.php?lang=en создал кодировку base64, которую я пытаюсь достичь? Это сводит меня с ума! Ха-ха.base64'ing a sha1

+1

Покажите нам свой код на C#. В вашем комментарии есть как минимум две фразы для поднятия бровей. – AakashM

+0

Я буду работать, но в основном, я следую статье websocket по wikipedia, и пока я получаю все остальные результаты, как ожидалось (включая разбор ключа запроса и добавление «магического номера» до конца) значение SHA1 (после снятия тире) выдает номер a46fb ..... Затем я передаю это значение в Convert.ToBase64String (Encoding.ASCII.GetBytes (key)), который дает значение в 56 символов, а не 28 бит, как в статье wikipedia. – Xealgo

+0

У меня такое ощущение, что значение байта выключено ... не могу поверить, что я этого раньше не осознавал .... Я ищу 28-значный base64 и 56/2 = 28 lol. – Xealgo

ответ

1

Сначала вы должны преобразовать его в массив байтов.

+0

Я. Sha1 возвращает массив байтов, который я заменяю, чтобы удалить тире, затем передаю его функции преобразования base64 через Encoding.UTF8 (я попробовал ASCII еще несколько других) .GetBytes (...). – Xealgo

+0

Покажите нам свой код и пример строки – Tearsdontfalls