얼마나 강한은암호 해시에 소금을 어떻게 넣어야합니까?
return sha1($salt.sha1($passwd));
단지와 비교 될 것이다 :
return sha1($salt.$passwd);
$salt
강한 임의 ASCII로 구성된 길이 (12)의 사용자 별 문자열입니다.
얼마나 강한은암호 해시에 소금을 어떻게 넣어야합니까?
return sha1($salt.sha1($passwd));
단지와 비교 될 것이다 :
return sha1($salt.$passwd);
$salt
강한 임의 ASCII로 구성된 길이 (12)의 사용자 별 문자열입니다.
언뜻보기에 암호에 대한 강력한 지식이 없으면 전혀 강하지 않다고 말할 수 있습니다. 그런데
, 일반적으로 같은 해시가없는 것 같은 암호를 사용하여sha1($login.$salt.$passwd);
그래서 2 사용자를 사용하는 것이 좋습니다 것.
내가 아는 한 강도에는 차이가 없습니다.
소금을 암호 해시에 추가하는 것이 일반적이므로 소금은 일반적으로 공격자에게 알려져 있습니다. 그러나 이것은 소금의 목적에 어긋나지 않습니다.
해시에 $ login/$ 사용자 이름을 추가하는 것이 좋습니다 (Vinzz 님의 솔루션). 일반적으로 사용자가 사용자 이름을 변경하면 문제가 발생할 수 있습니다. 더 좋은 해결책은 무작위 소금을 사용하는 것입니다.
사용 된 해싱 알고리즘 은이 차이를 만듭니다. SHA1
은 cryptographically broken으로 간주되어 암호 해시에 사용하면 안됩니다. BCRYPT
(복어 기반의 적응 비용 해싱 알고리즘을) 말하기
Gennerally 위 SHA256하고있는 연습
다른 솔리드 옵션 (PHP의 crypt();에 대한 CRYPT_BLOWFISH
플래그)로 최선을 considdered된다.
편집 :
는 여기 염장에 더 이상 답을 썼다 : 공격자가 무작위 공격을 위해 두 배의 SHA1 계산을 수행해야하기 때문에 stackoverflow.com/questions/1645161/salt-generation-and-open-source-software/
그것은 정확히 두 배 강하다.
물론 아직 정확한 것은 아닙니다. 반면 SHA1을 루프로 5000 회 실행하는 것은 권한 부여에있어 실용적이지만 공격은 5000 배 길어집니다.이 기술은 key strengthening으로 알려져 있습니다. 그러나 Jacco가 언급 한 적응 형 비용 해시 알고리즘을 대신하는 것은 가난한 사람의 대체품입니다.
... 또는 누군가가 귀하의 로그인 양식을 스팸하는 경우 서비스 거부. – Boldewyn
SHA1의 5000 배는 여전히 필요한 DB 요청보다 빠릅니다. –
내가 잘못 생각할 수도 있지만 암호 해시가 해시 암호 해시보다 약한 이유는 무엇입니까? 즉, 해시 알고리즘이 광고하는 내용을 수행하는 한. 그리고 만약 * 않습니다 *, 그럼, 당신은 전혀 사용하지 않아야하지만, 자주. – Boldewyn
무지개 테이블 (http://en.wikipedia.org/wiki/Rainbow_table) –