2013-04-15 6 views
4

CRYPT_SHA-256/512보다 짧은 해시를 생성하면 PHP의 CRYPT_BLOWFISH가 암호 해싱에서 더 좋은 것으로 간주되는 이유는 무엇입니까? SHA256/512 해시보다 동일한 BLOWFISH 해시를 계산하는 다른 단어를 찾는 것이 더 가능하지 않습니까?SHA보다 짧은 해시를 생성 할 때 PHP에서 CRYPT_BLOWFISH가 더 좋은 것으로 간주되는 이유

예 php.net 설명서에서 가져온 해시 : 그것은 확보하게 bcrypt와

Blowfish: $2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hi 
SHA-256: $5$rounds=5000$usesomesillystri$KqJWpanXZHKq2BOB43TSaYhEWsQ1Lr5QNyPCDH/Tp.6 
SHA-512: $6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21 
+2

훨씬 느린 알고리즘이기 때문에. 암호 해싱을 위해 원하는 것은 무엇입니까? – PeeHaa

답변

2

것은 그것이 다른 알고리즘의보다 계산하는 데 훨씬 느린 점이다.

SHA 버전을 사용하면 더 나은 컴퓨터를 사용할 수 있으며 무궁무진 한 시간에 탁자를 만들 수 있습니다. bcrypt를 사용하면 여전히 시간이 오래 걸릴 것입니다.이 알고리즘은 시간이 많이 걸립니다. 따라서 원래 암호를 해시에서 검색하는 것을 거의 불가능하게 만듭니다.

당신은이 link for more information을 볼 수 있습니다. 보안 스택 익스체인지 (Security StackExchange)에서 this thread을 볼 수 있습니다. 내가 말했듯이 때문에 해시에서 제공하는 비밀번호 않습니다에서 찾으려는 경우 해시 생산이 작다는 사실에 대해


은 잘 정말 연령대 소요, 전혀 중요하지 않습니다.

this sandbox을 참조하십시오. 부하율을 15 이상으로 설정하면 실행하는 데 3 초 이상 걸립니다. 그것으로 놀아 보아라. 그러면 그것이 안전한 이유를 이해할 것이다. 샌드 박스에서

코드 :

$time = microtime(true); 
$pass = crypt('myNewPassword', '$2y$15$usesomesillystringforsalt$'); 
$end_time = microtime(true); 

$diff = $end_time - $time; 
echo "$pass\n$diff" 

OUPUT :

$ (2Y) $ $ 15 usesomesillystringforeTfp6/FuUgyb1HKFA36V9tf6Go5xlv/그것은 1 해시 2.5 초 정도 걸립니다
2.4688489437103

! 수백만 개의 암호를 해시하는 것을 상상해보십시오!