преобразование хеш строки в бинарные данные

Тема в разделе "LANGS.C", создана пользователем ilja_, 26 ноя 2010.

  1. ilja_

    ilja_ New Member

    Публикаций:
    0
    Регистрация:
    27 май 2010
    Сообщения:
    33
    Всем привет.
    Использую алгоритм шифрования rc4, после шифровки строка принимает такой вид: ф06E,r}ЂСЄ®&u$, полученный от нее хеш:
    f4301836452c727d80d1aaae267524.
    Вопрос: как преобразовать полученный хеш опять в бинарные данные, как не мучался не получается, может подскажите, поиск использовал.
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    есть три числа: а + б + в = 17840
    назови мне эти три числа
     
  3. ilja_

    ilja_ New Member

    Публикаций:
    0
    Регистрация:
    27 май 2010
    Сообщения:
    33
    17, 84, 0 ?
    если нет, то можно более доступно пожалуйста
     
  4. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    17 + 84 + 0 не получится 17840
    Он к тому что хеш на то и хеш, а не шифр. Прочитайте определение.
     
  5. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    MSoft с одной стороны ты прав, а с другой... :)
    Посмотри внимательно на его "хэш", в частности на второй символ.

    Из хэша получить оригинальные данные невозможно, и про это MSoft так тонко намекает.
    Разница только в том что у тебя ни разу не хэш, а представление бинарных данных в виде 16-ричных кодов.

    Код (Text):
    1. #include<stdio.h>
    2.  
    3. char hex_str[]="f4301836452c727d80d1aaae267524";
    4. char bin_str[(sizeof(hex_str)-1)/2];
    5.  
    6. int main(void)
    7. {
    8.     int i, val;
    9.  
    10.     for(i=0; i<sizeof(hex_str); i+=2)
    11.     {
    12.         sscanf(hex_str+i, "%02X", &val);
    13.         sprintf(bin_str+(i>>1), "%c", val);
    14.     }
    15.  
    16.     return 0;
    17. }
     
  6. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    ilja_,

    RC4 даёт результат ограниченной длины при неограниченной длине входного потока. Сможешь обратить (получить из ограниченного неограниченное) — срочно патентуй, будет суперкомпрессор без потери качества, а теоретики умоются соплями. :derisive:
     
  7. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    cppasm
    Тоже ведь так подумал, но смутило то, что в plain после '0' стоит '6', а в хэше после 30h идёт 18h. Не подумал, что 18h - непечатаемый символ :lol:
     
  8. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    KeSqueer не пали контору и закрывай IE6 :)
    И в FireFox и в IE8 между 0 и 6 таки отображается непечатаемый символ, правда в IE квадратиком.
     
  9. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    KeSqueer,

    Мля, а ведь верно, и глаз за соответствие '$'<=>0x24 зацепился, но лень победила. :derisive:
     
  10. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    cppasm
    Chrome'ом пользуюсь, не отображает =(
     
  11. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    cppasm
    Почему бинарных данных в виде 16ричных?!, когда ascii символы в виде 16ричного хэша :)
    PS: Firefox иероглифы отображает.
     
  12. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Потому что это 16-ричные коды бинарных символов.
    И это ни разу ни хэш.

    http://ru.wikipedia.org/wiki/Хеширование
    Ключевое там "преобразование входного массива данных произвольной длины в выходную битовую строку фиксированной длины", что ни разу не выполняется для отображения символов их 16-ричными кодами.
     
  13. Scratch

    Scratch New Member

    Публикаций:
    0
    Регистрация:
    1 янв 2005
    Сообщения:
    161
    baldr RC4 это поточный шифр. А ограниченный результат при неограниченном входном потоке дает походу твой моск
     
  14. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    Scratch,

    В общем, накладка вышла при редактировании. Хотел грохнуть фразу в начале про RC4, получилось что грохнул слово "хэш". А "RC4" осталось.
     
  15. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    cppasm

    Не пойму ссылку на вики также как и правильность понятий, останусь при своем мнении
     
  16. ilja_

    ilja_ New Member

    Публикаций:
    0
    Регистрация:
    27 май 2010
    Сообщения:
    33
    Всем спасибо за ответы, cppasm спасибо за код :)
     
  17. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    JCronuz - хэш это функция преобразования входного потока данных произвольной длины в выходной поток фиксированной длины.
    Отображение бинарных символов их кодами этому условию не удовлетворяет, значит это не хэш.
    Чего не понятно?