꿈 갚는 아29

[toy02] 2. 오라클 사용자 비밀번호 암호화하기 본문

연습연습

[toy02] 2. 오라클 사용자 비밀번호 암호화하기

아29 2022. 4. 9. 21:22

 

참고사이트 : https://ferrypilot.tistory.com/7

 

[ORACLE] 데이터 암호화 하기(사용자 패스워드 암호화)

Oracle 데이터베이스 암호화하기(사용자 패스워드 암호화) 운영체제 : Windows7 64-bit 프로그램 및 버전 : Oracle11g R2 1. 작업개요  DB를 구축하다보면 사용자 등록을 해야 할 경우도 있고... 사용자 등

ferrypilot.tistory.com

 

이 부분은 그냥 위의 사이트를 그냥 다 따라했음!!! 감사합니다... 압도적 감사... 

 

위 사이트를 참고해서  cmd의 sqlplus를 통해서 패키지 생성까진 했는데... insert가 안 됨!! 기존에 만들어둔 member 테이블로 변경해서 했는데 member를 못 찾고, sql developer 통해서 해보면 패키지를 못 찾음. 😂😂😂

 

뭔가... 사용자의 문제인가? 근데 관리자로 들어가라고 되어있었는데. 내가 쓸 데이터베이스는 사용자 scott의 db니까 거기로 들어가서 다시 해보자...

 

exit 로 벗어나서 

sqlplus

scott

비번

입력해서 패키지 생성문 그대로 돌리고, insert 해보니까 잘 들어감 !!!  물론 테이블 명이랑 컬럼명은 내가 생성한 대로 변경해서 돌렸음.

 

(!!! 참고.  실행중인 cmd에서 벗어나야 해당 작업이 종료된 것으로 인식해서 sql developer 에서 조회 및 다른 insert문이 동작함. 아마 자동으로 트랜잭션이 도는듯...? 자세한 원리는 모르겠음. 그냥 추정.)

 

 

CREATE OR REPLACE PACKAGE CryptString AS
FUNCTION encrypt(Str VARCHAR2, hash VARCHAR2) RETURN VARCHAR2;
FUNCTION decrypt(xCrypt VARCHAR2, hash VARCHAR2) RETURN VARCHAR2;
END CryptString;
/

이거 돌리고 아래거 돌리기


CREATE OR REPLACE PACKAGE BODY CryptString AS
crypted_string VARCHAR2(2000);

FUNCTION encrypt(Str VARCHAR2, hash VARCHAR2) RETURN VARCHAR2 AS
pieces_of_eight INTEGER :=((FLOOR(LENGTH(Str)/8 + .9))*8);
BEGIN
dbms_obfuscation_toolkit.DESEncrypt(input_string => RPAD(Str, pieces_of_eight), key_string => RPAD(hash,16,'#'),
encrypted_string => crypted_string);
RETURN crypted_string;
END;

FUNCTION decrypt(xCrypt VARCHAR2, hash VARCHAR2) RETURN VARCHAR2 AS
BEGIN
dbms_obfuscation_toolkit.DESDecrypt(input_string => xCrypt, key_string => RPAD(hash,16,'#'), decrypted_string => crypted_string);
RETURN trim(crypted_string);
END;

END CryptString;
/

데이터 추가 테스트

insert into 테이블명(아이디컬럼, 비번컬럼) values('tester1',CryptString.encrypt('1234','key'));




출처: https://ferrypilot.tistory.com/7 [Community Group for IT]
감사합니다 감사감사 혹시 게시글 사라질까봐 백업용 기록

 

 

디벨로퍼에서 데이터 확인해보기!!

 

SELECT A.mem_id, a.mem_pw, CryptString.decrypt(MEM_PW, 'key') as pw from member a;

 

이거로 테이블 조회를 해보면 mem_pw에는 암호화된 데이터가 들어가있고, 패키지의 함수를 통해 꺼내와야 실제로 들어간 값이 나오게 된다. 

 

 

휴... 그냥 남이 쓴 걸 따라 쓰는 건데도 어렵다.

세상에 똑똑하고 친절한 사람들이 많아서 정말 감사한... 😇😇😇😇😇

 

 

이 패키지 생성 코드가 어떤 식으로 돌아가게 된 건지는 이후에 추가로 확인해봐야할 듯...

궁금하긴 한데 힘이 없다. 😫😫

 

 

'연습연습' 카테고리의 다른 글

참조변수 관련 정리  (0) 2022.06.11
[toy02] 3. dependency 추가 / web.xml 수정  (0) 2022.04.10
[toy02] 1. 데이터베이스 생성하기  (0) 2022.04.09
STS로 프로젝트 생성  (0) 2022.04.03
Comments