PDA

Просмотр полной версии : перевести MD5 hex -> bin


n0max
24.07.2003, 02:35
у меня есть 32-байтовая строка ASCII символов, которой представляется подпись MD5. как можно ее перевести в бинарный вид, то есть в 16-байтовую строку ?
можно объединять попарно символы, переводить в десятичное число, и писать в новую строку символ с получившимся номером, но что тогда делать с символом с номером 0 ? он не отображается на печати - и к строке ничего не добавится.
кто-нибудь сталкивался с подобным ?
спасибо за внимание

nagash
24.07.2003, 06:35
бред... тебе не кажется?
от начала и до конца...
отреж половину будет тебе 16 символов... =)
но у тебя обсолютное непонимание того что ты хочешь сделать...
или ты очень хорошо это понимаешь, но забыл что-то упомянуть... =)

Crazy
24.07.2003, 09:35
Оригинал написал(а) n0max
у меня есть 32-байтовая строка ASCII символов, которой представляется подпись MD5. как можно ее перевести в бинарный вид, то есть в 16-байтовую строку ?

Зачем?

n0max
24.07.2003, 12:40
сервер, принимающий эту подпись, работает с бинарным ее видом.
насчет непонимания: я , видимо, плохо объяснил. вот есть 32 байта подписи "b4a67f2859647af3426a7900511bc477", я их разбиваю на пары "b4 a6 7f 28 59 64 7a f3 42 6a 79 00 51 1b c4 77". каждая пара - шестнадцатеричное число (0xb4, 0xa6 и т.д.). но в таком виде каждое такое число занимает 2 байта (2 символа). мне нужно, чтобы оно весило 1 байт - я перевожу его в десятичное число (parseInt ("b4", 16)) и приписываю новой строке символ с таким кодом (String.fromCharCode(parseInt ("b4", 16))). теперь это число занимает всего 1 байт (1символ). Таким образом, я представил строку, изначально занимавшую 32 байта строкой, занимающей 16 байт. теперь проблема: символ, соответствующий коду 0 - непечатаемый, то есть при его добавлении к строке она не изменяется, соответственно когда сервер примет полученную строку, он не увидит на нужном месте нулевой байт.

n0max
24.07.2003, 14:04
собственно вот

Crazy
24.07.2003, 14:34
Используй промежуточный скрипт на языке, который использует не ASCIIZ строки, а строки со счетчиком. Тот же PHP, к примеру.

MOHCTEP
25.07.2003, 22:36
Преобразуй значения в строковую форму и сшивай их, тогда, по идее, нулевой байт не теряется.