2014-06-17 2 views
0

MySQL 데이터베이스에 암호를 bcrypt 해시로 저장합니다. MD5 및 SHA1을 사용하면 데이터베이스 내부에서 해시 함수를 실행할 수있었습니다. 이제 MySQL 내부에서 bcrypt를 실행할 수 있는지 궁금합니다. 데이터베이스 내부에 사용자 계정을 만들고 싶습니다.MySQL에서 Bcrypt?

manual에서 찾지 못했거나 놓쳤습니까? 어쩌면 저장 프로 시저로?

답변

3

각 암호에 고유 한 소금을 사용하고 암호와 함께 저장하자마자 느린 해시 함수가 아닌 단일 SQL 문에서 확인을 수행 할 수 없습니다.

첫 번째 단계에서는 사용자 이름으로 해시 값 (및 소금)을 가져 오는 쿼리를 작성한 다음 두 번째 단계에서이 해시 값과 같은 소금으로 입력 된 암호를 확인할 수 있습니다. 단일 SQL 문에서이 작업을 수행하려고하면 데이터베이스에서 일치하는 항목이 발견 될 때까지 각 행의 해시를 계산해야하며 BCrypt와 같은 느린 해시 함수를 사용하면 서버가 과부하가됩니다.

+0

감사합니다. 로그인 확인이 아니라 계정 생성에 대해서만 생각하고 있다고 언급하지 않았습니다. – PiTheNumber

+0

@PiTheNumber - 생성만으로는 실제로 작동하지만, 마지막으로 확인했을 때 암호를 해시하기 위해 MySql에서 적절한 함수를 찾지 못했습니다. 실제로 사람들이 검증을 위해 일할 것으로 예상하고 옵티마이 저가 SQL을 분석하고 해시 함수를 가장 낮은 우선 순위로 제공해야하기 때문에 실제로 이것을 구현하는 것은 매우 어려울 것입니다 (그리고 username과 같은 다른 필터도있을 수 있기를 바랍니다.)). – martinstoeckli