2012-04-08 3 views
0

그래서 md5()sha1()은 오래된 것이며 잠재적으로 고장났습니다. crypt()도 실행 가능한 솔루션이 아니라고 들었습니다.PHP 암호화 우수 사례?

그런 경우라면 누구든지 PHP의 최신 암호화 우수 사례를 지적 할 수 있습니까? 나는 웹을 수색했으나 날짜/잠재력을 찾는 것은 찾지 못했습니다.

+0

또한 여기 또는 프로그래머에게 공개할지 여부를 확신하지 못했지만이 내용이 여기에 속한다고 생각하면 자유롭게 투표 할 수 있습니다. 내가 너를지지 할거야. –

+1

암호 해독 또는 더 정확하게는 암호 해시 함수로 어떤 문제를 해결하고 싶습니까? 암호를 안전하게 저장 하시겠습니까? –

+0

예, 예. 나는 암호와 신용 카드 번호, 그리고 사용자와 지불 승인에 사용되는 기타 민감한 정보를 저장하려고합니다. 요컨대, 나는 약간의 비효율을 희생하더라도 가능한 한 안전을 원한다. –

답변

4

해시 플러스 소금만으로도 구식이며, 일반적으로 암호 해시 체계에서 더 이상 보증되지 않습니다. 이러한 해시를 병렬로 계산하기는 너무 쉽습니다 (개별 사용자 별 염분도 포함하여). 숙련 된 공격자는 그러한 스키마를 깨뜨릴 가능성이 큽니다.

대신 반복 해싱 형식을 사용해야합니다. 이러한 알고리즘은 암호에 소금을 적용하는 것 외에도 인위적으로 전체 해싱 프로세스를 느려지 게합니다 (일반적으로 암호화 해시는 고정 된 "보안 마진"을 유지하면서 최대한 빨리 설계됩니다). 이 목표를 달성하기위한 적합한 프리미티브는 일반적으로 bcrypt, scrypt 또는 PBKDF2 알고리즘으로 간주됩니다. PHP에서 bcrypt를 사용하는 방법에 대한 설명은 예를 들어 this answer을 참조하십시오.

+0

그래서 해싱 알고리즘을 100,000 번 반복하면 좋을까요? –

+1

더 좋지만 완벽하지는 않습니다. 앞에서 언급 한 세 가지 중 하나를 사용하십시오.이 기술은 해당 분야의 전문가가 특별히 설계했습니다. 자신의 구성표를 롤링하는 대신 사용하십시오. 잘못된 것을 얻는 것은 너무 쉽습니다. – emboss

+0

소금도 좋은 해싱 체계와 함께 사용됩니다. 그들은 단지 충분하지 않습니다. 따라서 첫 번째 문장은 오도 된 것입니다. – CodesInChaos