오라클 관련 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)));
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
다음과 같은 방법도 있으니 참고하셔서 적용해보세요
</p>
<p>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));
답변에 대한 댓글 2개
오류가 나오더라구요
그래서 일 단 임시로 standard_hash 로 사용 합니다.
패키지 설치가 안되니 암호화 / 복호화 함수를 쓸수가 없네요
---
PACKAGE DBMS_SQLHASH에 대한 오류:
LINE/COL ERROR
-------- -----------------------------------------------------------------
4/12 PLS-00710: SUPPLEMENTAL_LOG_DATA 프래그마를 여기에 지정할 수
없습니다.
DBA 권한이 있는 계정에서 다음과 같이 해보시겠어요?
[code]
-- DBMS_CRYPTO 패키지 설치
CONN / AS SYSDBA
@?/rdbms/admin/dbmsobtk.sql
@?/rdbms/admin/prvthshp.plb
[/code]
SQL 실행
[code]
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));
[/code]
또는 다음과 같이 실행해보세요
[code]
SELECT COUNT(*) AS cnt
FROM member_garbage
WHERE id = 'id'
AND password = UTL_RAW.CAST_TO_VARCHAR2(DBMS_CRYPTO.HASH_SH1(UTL_RAW.CAST_TO_RAW('psswrord')));
[/code]
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
내용보고 패키지 설치 하는되요
안되네요 ^^