오라클 관련 sql 질문 드립니다.

오라클 관련 sql 질문 드립니다.

QA

오라클 관련 sql 질문 드립니다.

답변 2

본문

안녕하세요

오라클 관련 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));

DBMS_CRYPTO 이부분으로 하는되요 21C에서 패키지 설치 하는되요
오류가 나오더라구요

그래서 일 단 임시로 standard_hash 로 사용 합니다.

패키지 설치가 안되니 암호화 / 복호화 함수를 쓸수가 없네요
---
PACKAGE DBMS_SQLHASH에 대한 오류:

LINE/COL ERROR
-------- -----------------------------------------------------------------
4/12    PLS-00710: SUPPLEMENTAL_LOG_DATA 프래그마를 여기에 지정할 수
        없습니다.

DBA 권한이 없어서 그런것 같습니다.
DBA 권한이 있는 계정에서 다음과 같이 해보시겠어요?


-- DBMS_CRYPTO 패키지 설치
CONN / AS SYSDBA
@?/rdbms/admin/dbmsobtk.sql
@?/rdbms/admin/prvthshp.plb


SQL 실행

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));


또는 다음과 같이 실행해보세요

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')));

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
filter #DB ×
전체 821
© SIRSOFT
현재 페이지 제일 처음으로