일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 비밀번호_암호화
- No_mapping_found_for_HTTP
- 서버_셧다운_소켓
- 오라클_암호화
- Address_already_in_use
- Oracle_Database_11g
- Read_timed_out
- BIND
- express_Edition
- 테이블생성
- time_wait
- 오라클설치
- No_mapping
- SQL_Developer
- CREATE_TABLE
- encrypt
- 404
- decrypt
- Today
- Total
꿈 갚는 아29
[toy02] 2. 오라클 사용자 비밀번호 암호화하기 본문
참고사이트 : 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 |