Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
DEFINE("TBP_SALT", "Соль. Ключ. Называйте, как хотите. Чем длиннее, тем лучше, как обычно. Ограничений по алфавиту нет.");
DEFINE("TBP_SALT_p1", substr(
md5(TBP_SALT),
min(
abs(strlen(TBP_SALT)%32-15),
abs(strlen(TBP_SALT)%32-32)
),
max(
abs(strlen(TBP_SALT)%32-15),
abs(strlen(TBP_SALT)%32-32)
)
));
DEFINE("TBP_SALT_p2", substr(
md5(strrev(TBP_SALT)),
min(
abs(strlen(TBP_SALT)%30-15),
abs(strlen(TBP_SALT)%32-26)
),
max(
abs(strlen(TBP_SALT)%32-15),
abs(strlen(TBP_SALT)%32-26)
)
));
function TBP_PWD($v)
{
return md5(
TBP_SALT_p1.
md5(
substr(TBP_SALT, 0, strlen(TBP_SALT)/3).
$v.
substr(TBP_SALT, 2*strlen(TBP_SALT)/3, strlen(TBP_SALT)-1)
)
.TBP_SALT_p2);
}
hash=md5(md5(pass)+salt)hash2=md5(md5(pass)+salt2)
Мы уже знаем пароль пользователя — он не меняется.
Я исходил и условия что такие достаточно
while [ `date +%s` -lt 1577833200 ]; do echo 'Обращение md5 на случайном входе - задача нерешаемая при нынешних мощностях'; done
И, к сожалению, есть вероятность того, что для вашего супер длинного пароля в минимум 30 символов найдется коллизия, которая будет намного короче (например в 1 байт), и будет случайно найденна при брутофорсе.

from random import choice
from string import lowercase
print ''.join([choice(lowercase) for i in range(8)])
в вопросах оценки безопасности системы принято оценивать худшие случаи, когда мы полагаем, что у злоумышленника есть всё, до чего в принципе возможно дотянуться.
Смысл в том (я повторяю это уже во второй раз), чтобы сделать процесс получения исходного пароля пользователя экономически невыгодным.
А то, о чём говорите вы, называется security through obscurity и секьюрити на самом деле является мало.
md5(concat(saltn, password)), а наша цель найти password. Тогда при бруте нам будет достаточно найти совпадение лишь с одним из известных хешей.md5(($salt="a").md5($pass="b"))md5("a".md5("c")) == md5("a".md5("b")) и обнаружим, что пароль собственно говоря он ввел неверный.It also automatically generate a salt every time… the generated salt is stored in the returned string for convenience
An optional salt string to base the hashing on. If not provided, the behaviour is defined by the algorithm implementation and can lead to unexpected results.Т.е. не используете свою соль — получаете непредсказуемый результат. Так что лучше явно указывать алгоритм и использовать собственную соль.

Автор md5crypt просит больше не пользоваться его скремблером