Ini salah satu cara mengenskripsi data/password
di Oracle
PASSWORD ENCRYPTION
===================
1. Buat Package namanya terserah aja...disini dibuat
TOOLKIT
-- Package header
CREATE OR REPLACE PACKAGE toolkit AS
FUNCTION encrypt (p_text IN VARCHAR2) RETURN RAW;
FUNCTION decrypt (p_raw IN RAW) RETURN VARCHAR2;
END toolkit;
/
-- Package Body
CREATE OR REPLACE PACKAGE BODY toolkit AS
g_key RAW(32767) := UTL_RAW
cast_to_raw('12345678');
g_pad_chr VARCHAR2(1) := '~';
PROCEDURE padstring (p_text IN OUT VARCHAR2);
--
--------------------------------------------------
FUNCTION encrypt (p_text IN VARCHAR2) RETURN RAW
IS
--
--------------------------------------------------
l_text VARCHAR2(32767) := p_text;
l_encrypted RAW(32767);
BEGIN
padstring(l_text);
DBMS_OBFUSCATION_TOOLKIT.desencrypt(input =>
UTL_RAW.cast_to_raw(l_text),key => g_key,
encrypted_data => l_encrypted);
RETURN l_encrypted;
END;
--
--------------------------------------------------
--
--------------------------------------------------
FUNCTION decrypt (p_raw IN RAW) RETURN VARCHAR2 IS
--
--------------------------------------------------
l_decrypted VARCHAR2(32767);
BEGIN
DBMS_OBFUSCATION_TOOLKIT.desdecrypt(input =>
p_raw,
key =>
g_key,
decrypted_data
=> l_decrypted);
RETURN
RTrim(UTL_RAW.cast_to_varchar2(l_decrypted),
g_pad_chr);
END;
--
--------------------------------------------------
--
--------------------------------------------------
PROCEDURE padstring (p_text IN OUT VARCHAR2) IS
--
--------------------------------------------------
l_units NUMBER;
BEGIN
IF LENGTH(p_text) MOD 8 > 0 THEN
l_units := TRUNC(LENGTH(p_text)/8) + 1;
p_text := RPAD(p_text, l_units * 8, g_pad_chr);
END IF;
END;
--
--------------------------------------------------
END toolkit;
/
2. buat tabel yang akan diencrypt, kalo sudah ada ya
tidak usah buat lagi,
misalnya disini dibuat table USER_PASSWORD dengan dua
kolom, yaitu:
USER_NAME
PASSWORD
CREATE TABLE user_password (
username VARCHAR2(20),
password RAW(16)
);
perhatikan, untuk kolom PASSWORD tipe data dibuat
RAW(16).
3. buat trigger yang akan meng-encrypt kolom PASSWORD
setiap insert atau update kolom PASSWORD.
CREATE OR REPLACE TRIGGER encrypted_password
BEFORE INSERT OR UPDATE ON user_password
FOR EACH ROW
DECLARE
BEGIN
:new.password :=
toolkit.encrypt(UTL_RAW.cast_to_varchar2(:new.password));
END;
/
CATATAN :
:NEW.PASSWORD, kata PASSWORD-nya disesuaikan dengan
kolom yg digunakan untuk menyimpan password. Kalo
nanti kolom untuk menyimpan password dikasih nama
SANDI ya ganti dengan :NEW.SANDI.
4. coba insert data ke tabel USER_PASSWORD
INSERT INTO user_password (username, password)
VALUES ('aulia', UTL_RAW.cast_to_raw('oracle'));
5. Lihat data di tabel user_password
SQL> select * FROM USER_PASSWORD;
USERNAME PASSWORD
-------------------- --------------------------------
aulia 765C1D8A96D2498906A4BF2E431E13EA
SQL> select username,toolkit.decrypt(password)
password
from user_password;
USERNAME PASSWORD
-------------------- --------------------------------
uben oracle
Demikian penjelasan dari saya mengenai Encrypt untuk
Password.
Semoga membantu
Salam
W.B. Aulia
--- Heriyanto KO <[EMAIL PROTECTED]> menulis:
> dear all,
>
> saya mau nanya nih...
> gimana caranya enkripsi password di oracle.
> supaya password tidak bisa dilihat via query atau
> OEM.
>
> thanks
>
>
> ---------------------------------
> Yahoo! Music Unlimited - Access over 1 million
> songs.Try it free.
>
> [Non-text portions of this message have been
> removed]
>
>
_______________________________________________________________________________
Apakah Anda Yahoo!?
Kunjungi halaman depan Yahoo! Indonesia yang baru!
http://beta.id.yahoo.com/
------------------------ Yahoo! Groups Sponsor --------------------~-->
Great things are happening at Yahoo! Groups. See the new email design.
http://us.click.yahoo.com/TISQkA/hOaOAA/yQLSAA/PhFolB/TM
--------------------------------------------------------------------~->
--
-----------I.N.D.O - O.R.A.C.L.E---------------
Keluar: [EMAIL PROTECTED]
Website: http://indo-oracle.blogspot.com
Mirror: http://indooracle.wordpress.com
-----------------------------------------------
Bergabung dengan Indonesia Thin Client User Groups,
Terminal Server, Citrix, New Moon Caneveral, di:
http://indo-thin.blogspot.com
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/indo-oracle/
<*> To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/