문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 다음 판 | 이전 판 | ||
| oracle:sha256 [2018/10/31 02:30] – 만듦 taekgu | oracle:sha256 [2025/04/15 10:05] (현재) – 바깥 편집 127.0.0.1 | ||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| ===== ORACLE SHA256 ===== | ===== ORACLE SHA256 ===== | ||
| - | * SHA256 PACKAGE | + | |
| + | |||
| + | ==== SHA256 PACKAGE | ||
| + | GitHub : CruiserX/ | ||
| + | * 간단한 사용법 | ||
| + | <code sql> | ||
| + | select b.password as pwd, a.emp_no, f_shaencryptor(substr(CTZ_NO, | ||
| + | sha256.encrypt(substr(ctz_no, | ||
| + | from vi_frm_phm_emp a | ||
| + | join frm_user b | ||
| + | on a.emp_no = b.login_id | ||
| + | </ | ||
| + | === PL/SQL Source === | ||
| <code sql> | <code sql> | ||
| CREATE OR REPLACE PACKAGE SHA256 IS | CREATE OR REPLACE PACKAGE SHA256 IS | ||
| 줄 114: | 줄 126: | ||
| / | / | ||
| </ | </ | ||
| - | * SHA256 PACKAGE BODY | + | ==== SHA256 PACKAGE BODY ==== |
| <code sql> | <code sql> | ||
| CREATE OR REPLACE PACKAGE BODY SHA256 IS | CREATE OR REPLACE PACKAGE BODY SHA256 IS | ||
| 줄 731: | 줄 743: | ||
| END SHA256; | END SHA256; | ||
| / | / | ||
| + | </ | ||
| + | |||
| + | ==== HMAC_SHA256 ==== | ||
| + | <code sql> | ||
| + | create or replace Function hmac_sha256 | ||
| + | ( | ||
| + | ptext Varchar2, | ||
| + | pkey Varchar2 | ||
| + | ) Return Varchar2 | ||
| + | Is | ||
| + | -- pad const | ||
| + | c_opad | ||
| + | c_ipad | ||
| + | c_kpad | ||
| + | |||
| + | --SHA256 block size 512 bit | ||
| + | c_blocksize Integer := 64; | ||
| + | |||
| + | --local var, length equals to blocksize | ||
| + | l_opad | ||
| + | l_ipad | ||
| + | l_key | ||
| + | Begin | ||
| + | |||
| + | l_opad := utl_raw.copies(c_opad, | ||
| + | l_ipad := utl_raw.copies(c_ipad, | ||
| + | |||
| + | If utl_raw.length(utl_raw.cast_to_raw(pkey)) > c_blocksize Then | ||
| + | l_key := utl_raw.cast_to_raw(sha256.encrypt(pkey)); | ||
| + | Else | ||
| + | l_key := utl_raw.cast_to_raw(pkey); | ||
| + | End If; | ||
| + | |||
| + | l_key := l_key || | ||
| + | | ||
| + | |||
| + | Return sha256.encrypt_raw(utl_raw.bit_xor(l_key, | ||
| + | sha256.encrypt_raw(utl_raw.bit_xor(l_key, | ||
| + | ); | ||
| + | |||
| + | End; | ||
| </ | </ | ||