테스트 사이트 - 개발 중인 베타 버전입니다

오라클 관련 sql 질문 드립니다. 채택완료

sukja 1년 전 조회 1,887

안녕하세요

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

채택된 답변
+20 포인트
웅푸
1년 전

당연하죠. 오라클에서는 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개

s
sukja
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개

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

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

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

LINE/COL ERROR
-------- -----------------------------------------------------------------
4/12 PLS-00710: SUPPLEMENTAL_LOG_DATA 프래그마를 여기에 지정할 수
없습니다.
웹메이킹
1년 전
DBA 권한이 없어서 그런것 같습니다.
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]

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인