Всем привет. Использую алгоритм шифрования rc4, после шифровки строка принимает такой вид: ф06E,r}ЂСЄ®&u$, полученный от нее хеш: f4301836452c727d80d1aaae267524. Вопрос: как преобразовать полученный хеш опять в бинарные данные, как не мучался не получается, может подскажите, поиск использовал.
MSoft с одной стороны ты прав, а с другой... Посмотри внимательно на его "хэш", в частности на второй символ. Из хэша получить оригинальные данные невозможно, и про это MSoft так тонко намекает. Разница только в том что у тебя ни разу не хэш, а представление бинарных данных в виде 16-ричных кодов. Код (Text): #include<stdio.h> char hex_str[]="f4301836452c727d80d1aaae267524"; char bin_str[(sizeof(hex_str)-1)/2]; int main(void) { int i, val; for(i=0; i<sizeof(hex_str); i+=2) { sscanf(hex_str+i, "%02X", &val); sprintf(bin_str+(i>>1), "%c", val); } return 0; }
ilja_, RC4 даёт результат ограниченной длины при неограниченной длине входного потока. Сможешь обратить (получить из ограниченного неограниченное) — срочно патентуй, будет суперкомпрессор без потери качества, а теоретики умоются соплями.
cppasm Тоже ведь так подумал, но смутило то, что в plain после '0' стоит '6', а в хэше после 30h идёт 18h. Не подумал, что 18h - непечатаемый символ
KeSqueer не пали контору и закрывай IE6 И в FireFox и в IE8 между 0 и 6 таки отображается непечатаемый символ, правда в IE квадратиком.
cppasm Почему бинарных данных в виде 16ричных?!, когда ascii символы в виде 16ричного хэша PS: Firefox иероглифы отображает.
Потому что это 16-ричные коды бинарных символов. И это ни разу ни хэш. http://ru.wikipedia.org/wiki/Хеширование Ключевое там "преобразование входного массива данных произвольной длины в выходную битовую строку фиксированной длины", что ни разу не выполняется для отображения символов их 16-ричными кодами.
baldr RC4 это поточный шифр. А ограниченный результат при неограниченном входном потоке дает походу твой моск
Scratch, В общем, накладка вышла при редактировании. Хотел грохнуть фразу в начале про RC4, получилось что грохнул слово "хэш". А "RC4" осталось.
JCronuz - хэш это функция преобразования входного потока данных произвольной длины в выходной поток фиксированной длины. Отображение бинарных символов их кодами этому условию не удовлетворяет, значит это не хэш. Чего не понятно?