최근 프로젝트에서 데이터베이스의 암호를 일치시킬 때 문제가 있습니다. 다음과 같이일치하는 데이터가있는 행을 찾을 수없는 MySQL 문
쿼리는 다음과 같습니다
는mysql_query("SELECT * FROM user_accounts WHERE username = '$username' AND password = '$encryptedPass'")
이
SELECT * FROM user_accounts WHERE username = 'T-McFarlane' AND password = 'äê1\Y¸c'
를 출력 그것은 단지 사용자와 나를 찾을 수 있지만 암호로는 할 수 없습니다. 나는 데이터베이스 암호와 암호화 된 암호가 제공하는 것을 모두 반향 시켰으며 정확히 동일합니다. 이것은 데이터베이스에 있지만 일치하는 행을 찾을 수 없습니다.
제 질문은이 암호에 특수 문자가 포함되어 있습니까? 아니면 실패하고있는 다른 이유가 있습니까?
데이터베이스에서 데이터 정렬 설정에 utf8_swedish_ci와 latin1_swedish_ci를 모두 시도했습니다.
왜 작동하지 않는지 신경 쓰지 마세요. 이는 비밀번호 인증을 수행하는 매우 위험한 방법이며 즉시 중지하는 것이 좋습니다. (SQL injection 참조). 대신 준비된 문을 사용해보십시오. 해답이 바이너리 암호화에 있다고 생각합니다. 대신 해시 된 해시 알고리즘을 사용하면 문제가 해결됩니다. –
나는 이미 복어와 소금에 절인 알고리즘을 사용하고 있습니다. 문제는 Bermer가 말한 바와 같았습니다. 저는 그 문자열을 벗어나는 것을 잊었습니다. – ThomasMcFarlane
* Barmar - 죄송합니다. 멀티 태스킹. – ThomasMcFarlane