在 PL/SQL 中實現數據庫加密與解密通常可以通過使用 Oracle 提供的 DBMS_CRYPTO 包來實現。下面是一個簡單的示例代碼:
加密:
DECLARE
v_key RAW(128);
v_data VARCHAR2(100) := 'Hello, World!';
v_encrypted_data RAW(2000);
BEGIN
v_key := DBMS_CRYPTO.RANDOMBYTES(16);
v_encrypted_data := DBMS_CRYPTO.ENCRYPT(
src => UTL_I18N.STRING_TO_RAW(v_data, 'AL32UTF8'),
typ => DBMS_CRYPTO.AES_CBC_PKCS5,
key => v_key
);
-- 存儲加密后的數據到數據庫中
-- INSERT INTO table_name (encrypted_column) VALUES(v_encrypted_data);
END;
/
解密:
DECLARE
v_key RAW(128);
v_encrypted_data RAW(2000);
v_decrypted_data VARCHAR2(100);
BEGIN
v_key := DBMS_CRYPTO.RANDOMBYTES(16);
-- 從數據庫中讀取加密的數據
-- SELECT encrypted_column INTO v_encrypted_data FROM table_name WHERE condition;
v_decrypted_data := UTL_I18N.RAW_TO_CHAR(
DBMS_CRYPTO.DECRYPT(
src => v_encrypted_data,
typ => DBMS_CRYPTO.AES_CBC_PKCS5,
key => v_key
),
'AL32UTF8'
);
DBMS_OUTPUT.PUT_LINE('Decrypted Data: ' || v_decrypted_data);
END;
/
需要注意的是,以上示例代碼只是一個簡單的示例,實際中需要根據具體的需求和安全要求來完善加密與解密的邏輯。另外,也可以考慮使用其他加密算法和密鑰管理方案來提高數據庫的安全性。