오라클 관련 sql 질문 드립니다.
본문
안녕하세요
오라클 관련 sql 질문드립니다.
maridb---
SELECT COUNT(*) AS cnt FROM member_garbage WHERE id= 'id' AND password=CONCAT('*', UPPER(SHA1(UNHEX(SHA1(('psswrord'))))))
---
이렇에 되어있는되요
오라클에서 처리 하니 오류가 나오네요
Warning: oci_error() expects parameter 1 to be resource, null given in ___경로
위 sql 문을 변경 해야 되나요?
문의 드립니다.
sql developer 에서 확인 하니
ORA-00904: "SHA1": 부적합한 식별자
이렇에 나오는 되요
고수님들 조언 부탁드립니다.
답변 2
당연하죠. 오라클에서는 DBMS_CRYPTO.HASH 함수를사용 하여 해시를 생성해야합니다.
SELECT COUNT(*) AS cnt FROM member_garbage WHERE id = 'id' AND password = UPPER(DBMS_CRYPTO.HASH(UTL_RAW.CAST_TO_RAW('psswrord'), DBMS_CRYPTO.HASH_SH1));
또는
RAWTOHEX 함수를 사용여 데이터를 16진수 문자열로 변환하고자한다면,
SELECT COUNT(*) AS cnt FROM member_garbage WHERE id = 'id' AND password = UPPER(RAWTOHEX(DBMS_CRYPTO.HASH(UTL_RAW.CAST_TO_RAW('psswrord'), DBMS_CRYPTO.HASH_SH1)));
다음과 같은 방법도 있으니 참고하셔서 적용해보세요
SELECT COUNT(*) AS cnt
FROM member_garbage
WHERE id = 'id'
AND password = UTL_RAW.CAST_TO_VARCHAR2(DBMS_CRYPTO.HASH(UTL_RAW.CAST_TO_RAW('psswrord'), 3));