- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
//как создать сильный пароль в php
$hp = md5(md5(md5(strong($_POST['hp'])))); // типо наш пароль
//а что же такое strong??
###############################
######## Фильтрация ###########
###############################
function strong($msg){
$msg = trim($msg);
$msg = htmlspecialchars($msg);
$msg = mysql_escape_string($msg);
return $msg;
}
Все о ней говорят, но никто никогда не видел такой хеш.
Если предположить, что есть некие два хеша A и B, такие, что начиная с какого-то применения md5 будет получаться только один из них, к тому же md5(A) = B и md5(B) = A, то, во-первых, будет соблюдена "почти" неотличимость, о которой сказано выше, а во-вторых, нет неподвижных точек.
Вообще, вероятность, что неподвижная точка есть, составляет (1-1/N)^(N) ≈ 1 - 1/e ≈ 63%. Где N - мощность множества, в которое отображает md5, т.е. N = 2^128
Вероятность, что существует хотя бы пара хешей A и B, у которых md5(A) = md5(B) составляет (1-N!/N^N) ≈ 100%
Как только речь заходит о MD5, всегда найдётся тот кто с умным видом скопирует эти 63% с очередной стековерфловочки. А хеша я пока не видел.
PS> http://math.stackexchange.com/questions/1799767/63-chance-of-event-happening-over-repeated-attempts
Но согласитесь, что хоть никто сейчас не сможет предъявить объект "Человек, доживший до 10.07.2016", у нас с Вами, вероятнее всего, будут сомнения по поводу справедливости утверждения "Никто не доживет до 10.07.2016". Так и с утверждением о неподвижной точке, а тем более про циклы.
Согласен. Но известны ли примеры таких циклов?
A=md5(md5(A))
A=md5(md5(md5(A)))
Но известно ли, что таких циклов не существует или, хотя бы, что ни один человек на планете не знает таких циклов?
md5 же не секьюрен
Автор знал об этом и подстраховался - заэкранировал опасные символы.
мало-ли что
научились подбирать строку с заданным хешом?
я это и спрашиваю
С SHA-1 такая же история, "ломали", "срезали"
А по-прежнему и гиты, и торренты и sslи его используют.
И если "80 бит", то речь явно идёт о 160 битном SHA-1.
Только вот я не слышал чтоб его в стандартные либы промышленных языков ложили.
А в целом длину любой хеш-функции нужно делить пополам.
То есть 128 бит MD5 - это 2^64 переборов.
160 бит SHA-1 - это 2^80.
224 бита SHA-2 - это 2^112.
Итд
Но это касается цифровых подписей, когда мы можем сгенерить HASH(S)=HASH(S')
FTFY