2012-09-23 2 views
1

AuthType Basic으로 MySQL 5.1 데이터베이스의 폴더에 대해 사용자를 인증하려고합니다.
암호는 일반 텍스트로 저장됩니다 (실제 암호가 아니기 때문에 중요하지 않습니다).
그러나 아파치의 암호 형식은 Linux 시스템의 SHA1, MD5 만 허용합니다. as described here.DBD 및 MySQL 5.1과 함께 사용하는 Apache2 인증에 적합한 암호 형식을 생성하는 방법은 무엇입니까?

SQL 쿼리로 올바른 형식을 어떻게 만들 수 있습니까? 아파치 형식은 20의 길이를 갖는 바이너리 형식이지만, mysql의 SHA1 함수는 40을 리턴한다.

base64_encode가 저장 기능입니다
SELECT CONCAT('{SHA}', BASE64_ENCODE(SHA1(access_key))) FROM user_access_keys INNER JOIN users ON user_access_keys.user_id = users.id WHERE name = %s 

(MySQL은 5.1 아직 TO_BASE64이없는) :

내 SQL 쿼리는이 같은 것입니다. 이 쿼리는 Apache에서 사용하는 것과 같은 형식이 아닌 61 바이트 BLOB를 반환합니다. 같은 형식을 어떻게 만들 수 있습니까?

다른 방법을 제안 할 수도 있습니다. 요점은 일반 텍스트를 암호로 사용하여 MySQL5.1 데이터베이스에서 사용자를 인증하려고한다는 것입니다.

+0

괜찮습니까? 그렇다면 어떻게하면 올바른 형식의 SQL 쿼리를 생성 할 수 있습니까? – kissgyorgy

답변

2

당신이 참조하는 문서는 Linux가 아닌 "Unix 전용"을 의미하지 않으므로 crypt()를 사용할 수 있습니다. 보안에 관심이 없으므로 MySQL의 encrypt 기능과 함께 가장 쉬운 옵션이라고 제안합니다. 쿼리에서 상수 시드 값을 사용하려고 할 수 있습니다.

SELECT ENCRYPT(access_key, 'SA') FROM user_access_keys INNER JOIN users ON user_access_keys.user_id = users.id WHERE name = %s 
+0

그냥 완벽, 감사합니다 !!!! – kissgyorgy