Доброго времени суток.
Помогите, пожалуйста, разобраться.
Есть несколько строк, не могу понять, хэш это или просто произвольные наборы символов.
Длина 64 символа, присутствуют латинские буквы в верхнем и нижнем регистре, цифры, из символов присутствуют "~", ".", "-", "_"
Примеры:
1. T~TVA5MCB~hcmpTulimpvOhmbjJivrwX2vaR941w-UCkBNeapcULs0a.4TnN74Dp
2. ~aybNLEzDy64At9qrPLMfuikz.6J6gib40nAHirvdt8RsyovC1Lxyn8vKnDctEG0
3. pDs7_uVNcfiwYeudJAQHJzcLPALOdMYiQGSCdLc0mtaEySCxQKhppfMqy8zKHZVF
Как можно определить хэш это или просто строка? Если хэш, то что за алгоритм?
Спасибо.
Хэш или нет?
Модераторы: Naeel Maqsudov, C_O_D_E
Достоверного ответа не существует. Кто знает, у кого что на уме. Достаточно по-XOR-ить обычный BASE64 или MD5 и уже нельзя будет определить его тип.Как можно определить хэш это или просто строка?
It's a long way to the top if you wanna rock'n'roll
-
- Сообщения: 3
- Зарегистрирован: 29 июл 2015, 23:33
А существуют ли алгоритмы с хэшем длиной 64 символа и набором символов [a-zA-Z0-9~._-] ?Достоверного ответа не существует.
Не знаю насчет множества символов - то это в основном HEX, но если каждую пару HEX рассматривать как код символа, то вполне может получится такой хеш. 64 символа имеют SHA256, EDON-R256, Snefru256, HAVAL256, RIPEMD256 и т.д., но я чувствую тут нужен HEX-based хеш длиной 384 бита (6 бит на символ * 64 символа)
It's a long way to the top if you wanna rock'n'roll
-
- Сообщения: 3
- Зарегистрирован: 29 июл 2015, 23:33
Спасибо, подумаю в этом направлении.нужен HEX-based хеш длиной 384 бита
Хеш может быть любой постоянной длины, хоть на пару десятков гибибайт. И даже если на какую нибудь длину нет стандартной криптограической хеш-функции, можно ведь и конкатенировать два разных хеша одного пароля, в результате снова получится хеш, но суммарной длины, или же написать свою хеш-функцию с ноля, причём, не обязательно даже криптографическую. А для того, чтоб конкатенируемые хеши не совпадали, можно использовать или хеш-фукнции, реализующие разные алгоритмы, или две разные "соли", и сразу и два алгоритма, и две "соли". Будет ли взлом конкатенации хешей сложней, чем каждого из хешей в отдельности - это вопрос отдельный, но сделать так можно и получится снова хеш.AkRomiresS писал(а):А существуют ли алгоритмы с хэшем длиной 64 символа и набором символов [a-zA-Z0-9~._-] ?
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Но именно это - не хеш по какому то одному алгоритму, пусть даже и составному, так как длина первого примера 64 символа, а второго и третьего - не 64, а 65 символов. Хеш же по определению имеет не только коллизии, но и постоянную длину, ни как не зависящую от исходных данных. Возможно это какой то другой код с коллизиями. Но не хеш по какому то одному алгоритму. Если это всё таки хеши, то они имеют разное назначение и получены по как минимум двум разным алгоритмам. И ломать их как один набор нельзя. Два последних примера могут быть хешами из одного набора, но первый явно из другого.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Пример кода с колизиями, но не хеша: . Результат имеет ту же длину, что и исходная строка, но понять, какая именно строка была исходной, не возможно, так как часть информации из неё теряется.
Код: Выделить всё
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;
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Например, при исходных строках: "1234", "4321", "3456" и "6543" результат будет один и тот же, коды символов результата будут 5 1 1 5.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.