MSSQL 서버에 사용자 PASSWORD 데이터가 'SHA2_xxx'방식으로 암호화되어 저장되있습니다.

 

그럼 php로 입력받은 id와 password값을 처리하기 위해서 아래와 같은 쿼리를 날려 준 후 결과값이 있으면 로그인 허용을 해주면 될 것입니다.

select * from 사용자정보
where 유저id = $id
and 비밀번호 = $password

하지만 위처럼  $password 값이 암호화 처리되지 않은 값이라면 쿼리를 아래처럼 수정해야합니다.

select * from 사용자정보
where 유저id = $id
and 비밀번호 =  HASHBYTES('SHA2_256' , $password)

하지만 sql 수준의 hashbytes 함수의 return값은 binary형(0x.....)식 입니다.

만약 사용자정보 테이블의 유저id 컬럼이 binary형식으로 저장이 안 되어있는 경우라면 아래처럼 character 형태로 convert를 해줄 수도 있습니다.

select * from 사용자정보
where 유저id = $id
and 비밀번호 =  CONVERT(NVARCHAR(32),HASHBYTES('SHA2_256' , $password))

아니면 php 수준에서 아래와 같이 hash()함수로 처리한 뒤에 쿼리로 넘겨주는 방법도 활용할 수 있습니다.

$password_hash = hash("sha256", $password)

 

+ Recent posts