Страница 1 из 1
Хэш или нет?
Добавлено: 29 июл 2015, 23:47
AkRomiresS
Доброго времени суток.
Помогите, пожалуйста, разобраться.
Есть несколько строк, не могу понять, хэш это или просто произвольные наборы символов.
Длина 64 символа, присутствуют латинские буквы в верхнем и нижнем регистре, цифры, из символов присутствуют "~", ".", "-", "_"
Примеры:
1. T~TVA5MCB~hcmpTulimpvOhmbjJivrwX2vaR941w-UCkBNeapcULs0a.4TnN74Dp
2. ~aybNLEzDy64At9qrPLMfuikz.6J6gib40nAHirvdt8RsyovC1Lxyn8vKnDctEG0
3. pDs7_uVNcfiwYeudJAQHJzcLPALOdMYiQGSCdLc0mtaEySCxQKhppfMqy8zKHZVF
Как можно определить хэш это или просто строка? Если хэш, то что за алгоритм?
Спасибо.
Re: Хэш или нет?
Добавлено: 30 июл 2015, 16:00
somewhere
Как можно определить хэш это или просто строка?
Достоверного ответа не существует. Кто знает, у кого что на уме. Достаточно по-XOR-ить обычный BASE64 или MD5 и уже нельзя будет определить его тип.
Re: Хэш или нет?
Добавлено: 30 июл 2015, 16:06
AkRomiresS
Достоверного ответа не существует.
А существуют ли алгоритмы с хэшем длиной 64 символа и набором символов [a-zA-Z0-9~._-] ?
Re: Хэш или нет?
Добавлено: 30 июл 2015, 16:22
somewhere
Не знаю насчет множества символов - то это в основном HEX, но если каждую пару HEX рассматривать как код символа, то вполне может получится такой хеш. 64 символа имеют SHA256, EDON-R256, Snefru256, HAVAL256, RIPEMD256 и т.д., но я чувствую тут нужен HEX-based хеш длиной 384 бита (6 бит на символ * 64 символа)
Re: Хэш или нет?
Добавлено: 30 июл 2015, 16:45
AkRomiresS
нужен HEX-based хеш длиной 384 бита
Спасибо, подумаю в этом направлении.
Re: Хэш или нет?
Добавлено: 20 авг 2015, 10:17
Сионист
AkRomiresS писал(а):А существуют ли алгоритмы с хэшем длиной 64 символа и набором символов [a-zA-Z0-9~._-] ?
Хеш может быть любой постоянной длины, хоть на пару десятков гибибайт. И даже если на какую нибудь длину нет стандартной криптограической хеш-функции, можно ведь и конкатенировать два разных хеша одного пароля, в результате снова получится хеш, но суммарной длины, или же написать свою хеш-функцию с ноля, причём, не обязательно даже криптографическую. А для того, чтоб конкатенируемые хеши не совпадали, можно использовать или хеш-фукнции, реализующие разные алгоритмы, или две разные "соли", и сразу и два алгоритма, и две "соли". Будет ли взлом конкатенации хешей сложней, чем каждого из хешей в отдельности - это вопрос отдельный, но сделать так можно и получится снова хеш.
Re: Хэш или нет?
Добавлено: 20 авг 2015, 10:27
Сионист
Но именно это - не хеш по какому то одному алгоритму, пусть даже и составному, так как длина первого примера 64 символа, а второго и третьего - не 64, а 65 символов. Хеш же по определению имеет не только коллизии, но и постоянную длину, ни как не зависящую от исходных данных. Возможно это какой то другой код с коллизиями. Но не хеш по какому то одному алгоритму. Если это всё таки хеши, то они имеют разное назначение и получены по как минимум двум разным алгоритмам. И ломать их как один набор нельзя. Два последних примера могут быть хешами из одного набора, но первый явно из другого.
Re: Хэш или нет?
Добавлено: 20 авг 2015, 10:57
Сионист
Пример кода с колизиями, но не хеша:
Код: Выделить всё
char *p;
size_t i;
for (p=s; *p!=0; ++p);
for (--p, i=0; *s!=0; ++s, --p, ++r, ++i)
{
*r=*s;
*r^=*p;
}
*r=0;
. Результат имеет ту же длину, что и исходная строка, но понять, какая именно строка была исходной, не возможно, так как часть информации из неё теряется.
Re: Хэш или нет?
Добавлено: 20 авг 2015, 11:00
Сионист
Например, при исходных строках: "1234", "4321", "3456" и "6543" результат будет один и тот же, коды символов результата будут 5 1 1 5.