2011-11-26 3 views
1

어느 방법이 더 안전하고 단점이 있습니까?열쇠가 있거나 염분이있는 해시?

// Using a salt. 
$keyed_hash = hash_hmac("sha512", $string.$salt); 

// Using a key. 
$keyed_hash = hash_hmac("sha512", $string, $key); 
+1

당신은 그 해시를 사용하고자하는 것을 기술하지 않았습니다. 어느 쪽도 암호에 대한 좋은 아이디어는 아닙니다. – CodesInChaos

+0

암호 저장에 hmac를 사용하는 것보다 $ key 부분을 사용해야하는 경우 그렇지 않으면 hmac을 사용해야하는 이유는 무엇입니까? – rook

+3

이 질문은 어떤 방법이 더 나은지 묻는 것이므로 SO에 대해 유효합니다. 대답은 사실에 의해 뒷받침 될 것이므로 (의견을 근거로하지 않으므로) 모든 정보가 필요합니다. –

답변

3

무엇을하려고합니까? 그들은 일반적으로 다른 목적을 가지고 있지만 암호를 저장하기 위해 사용할 계획이라면 거의 같습니다. 소금이 무작위 (반드시 있어야 함)이고 키가 무작위 인 경우 최종 결과는 비슷합니다. 모든 키 (또는 같은 소금)에 동일한 키를 사용하면 보안 수준이 크게 떨어집니다. 키 또는 소금을 별도로 저장해야하지만 누군가가 그것을 본다면 상관 없습니다 (예 : 64 비트 임의의 숫자를 사용하는 한). HMAC 계산은 단순한 SHA512 계산보다 계산 집약적입니다. 당신의 목적이 공격자를 더 열심히하도록 만드는 것이라면, 그것은 더 좋습니다. 그러나 64 비트 소금을 사용하는 간단한 SHA512가 대부분의 용도에 적합합니다.

2012 년 말에 새로운 SHA3 알고리즘이 선택됩니다. NIST는 SHA212 알고리즘 중 하나 인 SHA2 알고리즘을 대체 할 새로운 알고리즘을 선택하기위한 경쟁의 후기 단계에 있습니다.

+0

2014 년에 저는 아주 친절하게 대답 할 수 있을지 확신하지 못합니다. 해커에 대한 주요 방해 요소가 될만큼 계산적으로 까다로운 것도 아닙니다. 반복되는 해싱 등의 답변을 제공하는 기타 관련 질문이 있습니다.주의하십시오. –