DBMS_OBFUSCATION_TOOLKIT
提供的函数和存储过程支持对RAW
和VARCHAR2
类型数据进行加密、解密以及哈希值计算等。
DBMS_OBFUSCATION_TOOLKIT
功能完全包含于DBMS_CRYPTO
。因此,建议您使用DBMS_CRYPTO。
子程序总览
子程序 | 说明 |
DESEncrypt Function/Procedure | 使用DES算法对数据进行加密 |
DESDecrypt Function/Procedure | 使用DES算法对数据进行解密 |
DES3Encrypt Function/Procedure | 使用3DES算法数据进行加密 |
DES3Decrypt Function/Procedure | 使用3DES算法对数据进行解密 |
MD5 Function/Procedure | 计算数据的MD5哈希值 |
DESGetKey Function/Procedure | 生成DES加密密钥 |
DES3GetKey Function/Procedure | 生成3DES加密密钥 |
其中DESEncrypt、DESDecrypt、DES3Encrypt、DES3Decrypt、DESGetKey以及DES3GetKey的函数和存储过程仅在集群Oracle语法兼容 2.0(内核小版本2.0.14.17.34.0及以上)版本支持。
DESEncrypt Function
使用DES算法将VARCHAR2或RAW类型的数据进行加密。
VARCHAR2
语法
FUNCTION DESEncrypt(input_string IN VARCHAR2,
key_string IN VARCHAR2)
RETURN VARCHAR2;
参数说明
参数 | 说明 |
input_string | 待加密的VARCHAR2类型数据。 |
key_string | VARCHAR2类型的加密密钥。 |
RAW
语法
FUNCTION DESEncrypt(input IN RAW,
key IN RAW)
RETURN RAW;
参数说明
参数 | 说明 |
input | 待加密的RAW类型数据。 |
key | RAW类型的加密密钥。 |
示例
DECLARE
input_data RAW(100);
key_data RAW(8);
encrypted_data RAW(200);
BEGIN
input_data := UTL_RAW.CAST_TO_RAW('Hello World');
key_data := UTL_RAW.CAST_TO_RAW('12345678');
encrypted_data := DBMS_OBFUSCATION_TOOLKIT.DESEncrypt(
input => input_data,
key => key_data
);
DBMS_OUTPUT.PUT_LINE('Encrypted RAW: ' || encrypted_data);
END;
DESEncrypt Procedure
使用DES算法将VARCHAR2或RAW类型的数据进行加密。
VARCHAR2
语法
PROCEDURE DESEncrypt(input_string IN VARCHAR2,
key_string IN VARCHAR2,
encrypted_string OUT VARCHAR2);
参数说明
参数 | 说明 |
input_string | 待加密的VARCHAR2类型数据。 |
key_string | VARCHAR2类型的加密密钥。 |
encrypted_string | 输出参数,加密后的VARCHAR2类型数据。 |
RAW
语法
PROCEDURE DESEncrypt(input IN RAW,
key IN RAW,
encrypted_data OUT RAW);
参数说明
参数 | 说明 |
input | 待加密的RAW类型数据。 |
key | RAW类型的加密密钥。 |
encrypted_data | 输出参数,加密后的RAW类型数据。 |
示例
DECLARE
input_str VARCHAR2(100) := 'Hello World';
key_str VARCHAR2(8) := '12345678';
encrypted_str VARCHAR2(200);
BEGIN
DBMS_OBFUSCATION_TOOLKIT.DESEncrypt(
input_string => input_str,
key_string => key_str,
encrypted_string => encrypted_str
);
DBMS_OUTPUT.PUT_LINE('Original: ' || input_str);
DBMS_OUTPUT.PUT_LINE('Encrypted: ' || encrypted_str);
END;
DESDecrypt Function
使用DES算法将VARCHAR2或RAW类型的数据进行解密。
VARCHAR2
语法
FUNCTION DESDecrypt(input_string IN VARCHAR2,
key_string IN VARCHAR2)
RETURN VARCHAR2;
参数说明
参数 | 说明 |
input_string | 待解密的VARCHAR2类型数据。 |
key_string | VARCHAR2类型的解密密钥。 |
RAW
语法
FUNCTION DESDecrypt(input IN RAW,
key IN RAW)
RETURN RAW;
参数说明
参数 | 说明 |
input | 待解密的RAW类型数据。 |
key | RAW类型的解密密钥。 |
示例
DECLARE
input_str VARCHAR2(100) := 'Hello World';
key_str VARCHAR2(8) := '12345678';
encrypted_str VARCHAR2(200);
decrypted_data VARCHAR2(200);
BEGIN
encrypted_str := DBMS_OBFUSCATION_TOOLKIT.DESEncrypt(
input_string => input_str,
key_string => key_str
);
decrypted_data := DBMS_OBFUSCATION_TOOLKIT.DESDecrypt(
input_string => encrypted_str,
key_string => key_str
);
DBMS_OUTPUT.PUT_LINE('Original: ' || input_str);
DBMS_OUTPUT.PUT_LINE('Decrypted: ' || decrypted_data);
END;
DESDecrypt Procedure
使用DES算法将VARCHAR2或RAW类型的数据进行解密。
VARCHAR2
语法
PROCEDURE DESDecrypt(input_string IN VARCHAR2,
key_string IN VARCHAR2,
decrypted_string OUT VARCHAR2);
参数说明
参数 | 说明 |
input_string | 待解密的VARCHAR2类型数据。 |
key_string | VARCHAR2类型的解密密钥。 |
decrypted_string | 输出参数,解密后的VARCHAR2类型数据。 |
RAW
语法
PROCEDURE DESDecrypt(input IN RAW,
key IN RAW,
decrypted_data OUT RAW);
参数说明
参数 | 说明 |
input | 待解密的RAW类型数据。 |
key | RAW类型的解密密钥。 |
decrypted_data | 输出参数,解密后的RAW类型数据。 |
示例
DECLARE
input_data RAW(100);
key_data RAW(8);
encrypted_data RAW(200);
decrypted_data RAW(200);
BEGIN
input_data := UTL_RAW.CAST_TO_RAW('Hello World');
key_data := UTL_RAW.CAST_TO_RAW('12345678');
DBMS_OBFUSCATION_TOOLKIT.DESEncrypt(
input => input_data,
key => key_data,
encrypted_data => encrypted_data
);
DBMS_OBFUSCATION_TOOLKIT.DESDecrypt(
input => encrypted_data,
key => key_data,
decrypted_data => decrypted_data
);
DBMS_OUTPUT.PUT_LINE('Input RAW: ' || input_data);
DBMS_OUTPUT.PUT_LINE('Decrypted RAW: ' || decrypted_data);
END;
DES3Encrypt Function
使用3DES算法将VARCHAR2或RAW类型的数据进行加密。
VARCHAR2
语法
FUNCTION DES3Encrypt(input_string IN VARCHAR2,
key_string IN VARCHAR2,
which IN PLS_INTEGER DEFAULT TwoKeyMode,
iv_string IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;
参数说明
参数 | 说明 |
input_string | 待加密的VARCHAR2类型数据。 |
key_string | VARCHAR2类型的加密密钥。 |
which | 指定3DES模式:
|
iv_string | 初始化向量 |
RAW
语法
FUNCTION DES3Encrypt(input IN RAW,
key IN RAW,
which IN PLS_INTEGER DEFAULT TwoKeyMode,
iv IN RAW DEFAULT NULL)
RETURN RAW;
参数说明
参数 | 说明 |
input | 待加密的RAW类型数据。 |
key | RAW类型的加密密钥。 |
which | 指定3DES模式:
|
iv | 初始化向量 |
示例
DECLARE
input_data RAW(100);
key_data RAW(100);
encrypted_data RAW(200);
BEGIN
input_data := UTL_RAW.CAST_TO_RAW('Sensitive Data');
key_data := UTL_RAW.CAST_TO_RAW('1234567890123456');
encrypted_data := DBMS_OBFUSCATION_TOOLKIT.DES3Encrypt(
input => input_data,
key => key_data,
which => DBMS_OBFUSCATION_TOOLKIT.TwoKeyMode
);
DBMS_OUTPUT.PUT_LINE('3DES Encrypted RAW: ' || encrypted_data);
END;
DES3Encrypt Procedure
使用3DES算法将VARCHAR2或RAW类型的数据进行加密。
VARCHAR2
语法
PROCEDURE DES3Encrypt(input_string IN VARCHAR2,
key_string IN VARCHAR2,
encrypted_string OUT VARCHAR2,
which IN PLS_INTEGER DEFAULT TwoKeyMode,
iv_string IN VARCHAR2 DEFAULT NULL);
参数说明
参数 | 说明 |
input_string | 待加密的VARCHAR2类型数据。 |
key_string | VARCHAR2类型的加密密钥。 |
encrypted_data | 输出参数,加密后的VARCHAR2类型数据。 |
which | 指定3DES模式:
|
iv_string | 初始化向量 |
示例
DECLARE
input_str VARCHAR2(100) := 'Sensitive Data';
key_str VARCHAR2(100) := '1234567890123456'; -- 16字符密钥
encrypted_str VARCHAR2(200);
BEGIN
DBMS_OBFUSCATION_TOOLKIT.DES3Encrypt(
input_string => input_str,
key_string => key_str,
encrypted_string => encrypted_str,
which => DBMS_OBFUSCATION_TOOLKIT.TwoKeyMode
);
DBMS_OUTPUT.PUT_LINE('Original: ' || input_str);
DBMS_OUTPUT.PUT_LINE('3DES Encrypted: ' || encrypted_str);
END;
RAW
语法
PROCEDURE DES3Encrypt(input IN RAW,
key IN RAW,
encrypted_data OUT RAW,
which IN PLS_INTEGER DEFAULT TwoKeyMode,
iv IN RAW DEFAULT NULL);
参数说明
参数 | 说明 |
input | 待加密的RAW类型数据。 |
key | RAW类型的加密密钥。 |
encrypted_data | 输出参数,加密后的RAW类型数据。 |
which | 指定3DES模式:
|
iv | 初始化向量 |
示例
DECLARE
input_data RAW(100);
key_data RAW(100);
encrypted_data RAW(200);
BEGIN
input_data := UTL_RAW.CAST_TO_RAW('Sensitive Data');
key_data := UTL_RAW.CAST_TO_RAW('123456789012345678901234');
DBMS_OBFUSCATION_TOOLKIT.DES3Encrypt(
input => input_data,
key => key_data,
encrypted_data => encrypted_data,
which => DBMS_OBFUSCATION_TOOLKIT.ThreeKeyMode
);
DBMS_OUTPUT.PUT_LINE('3DES Encrypted RAW: ' || encrypted_data);
END;
DES3Decrypt Function
使用3DES算法将VARCHAR2或RAW类型的数据进行解密。
VARCHAR2
语法
FUNCTION DES3Decrypt(input_string IN VARCHAR2,
key_string IN VARCHAR2,
which IN PLS_INTEGER DEFAULT TwoKeyMode,
iv_string IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;
参数说明
参数 | 说明 |
input_string | 待解密的VARCHAR2类型数据。 |
key_string | VARCHAR2类型的解密密钥。 |
which | 指定3DES模式:
|
iv_string | 初始化向量 |
RAW
语法
FUNCTION DES3Decrypt(input IN RAW,
key IN RAW,
which IN PLS_INTEGER DEFAULT TwoKeyMode,
iv IN RAW DEFAULT NULL)
RETURN RAW;
参数说明
参数 | 说明 |
input | 待解密的RAW类型数据。 |
key | RAW类型的解密密钥。 |
which | 指定3DES模式:
|
iv | 初始化向量 |
示例
DECLARE
input_data RAW(100);
key_data RAW(100);
encrypted_data RAW(200);
decrypted_data RAW(200);
BEGIN
input_data := UTL_RAW.CAST_TO_RAW('Sensitive Data');
key_data := UTL_RAW.CAST_TO_RAW('1234567890123456');
encrypted_data := DBMS_OBFUSCATION_TOOLKIT.DES3Encrypt(
input => input_data,
key => key_data,
which => DBMS_OBFUSCATION_TOOLKIT.TwoKeyMode
);
decrypted_data := DBMS_OBFUSCATION_TOOLKIT.DES3Decrypt(
input => encrypted_data,
key => key_data,
which => DBMS_OBFUSCATION_TOOLKIT.TwoKeyMode
);
DBMS_OUTPUT.PUT_LINE('3DES Input RAW: ' || input_data);
DBMS_OUTPUT.PUT_LINE('3DES Decrypted RAW: ' || decrypted_data);
END;
DES3Decrypt Procedure
使用3DES算法将VARCHAR2或RAW类型的数据进行解密。
VARCHAR2
语法
PROCEDURE DES3Decrypt(input_string IN VARCHAR2,
key_string IN VARCHAR2,
decrypted_string OUT VARCHAR2,
which IN PLS_INTEGER DEFAULT TwoKeyMode,
iv_string IN VARCHAR2 DEFAULT NULL);
参数说明
参数 | 说明 |
input_string | 待解密的VARCHAR2类型数据。 |
key_string | VARCHAR2类型的解密密钥。 |
decrypted_string | 输出参数,解密后的VARCHAR2类型数据。 |
which | 指定3DES模式:
|
iv_string | 初始化向量 |
RAW
语法
PROCEDURE DES3Decrypt(input IN RAW,
key IN RAW,
decrypted_data OUT RAW,
which IN PLS_INTEGER DEFAULT TwoKeyMode,
iv IN RAW DEFAULT NULL);
参数说明
参数 | 说明 |
input | 待解密的RAW类型数据。 |
key | RAW类型的解密密钥。 |
decrypted_data | 输出参数,解密后的RAW类型数据。 |
which | 指定3DES模式:
|
iv | 初始化向量 |
示例
DECLARE
input_data RAW(100);
key_data RAW(100);
encrypted_data RAW(200);
decrypted_data RAW(200);
BEGIN
input_data := UTL_RAW.CAST_TO_RAW('Sensitive Data');
key_data := UTL_RAW.CAST_TO_RAW('1234567890123456');
DBMS_OBFUSCATION_TOOLKIT.DES3Encrypt(
input => input_data,
key => key_data,
which => DBMS_OBFUSCATION_TOOLKIT.TwoKeyMode,
encrypted_data => encrypted_data
);
DBMS_OBFUSCATION_TOOLKIT.DES3Decrypt(
input => encrypted_data,
key => key_data,
which => DBMS_OBFUSCATION_TOOLKIT.TwoKeyMode,
decrypted_data => decrypted_data
);
DBMS_OUTPUT.PUT_LINE('3DES Input RAW: ' || input_data);
DBMS_OUTPUT.PUT_LINE('3DES Decrypted RAW: ' || decrypted_data);
END;
MD5 Function
计算VARCHAR2或RAW类型的数据的MD5哈希值。
VARCHAR2
语法
FUNCTION md5(input_string IN VARCHAR2) RETURN VARCHAR2;
参数说明
参数 | 说明 |
input | 待计算哈希的VARCHAR2类型数据。 |
示例
DECLARE
input_str VARCHAR2(100) := 'Hello World';
hash_result VARCHAR2(100);
BEGIN
hash_result := DBMS_OBFUSCATION_TOOLKIT.MD5(input_string => input_str);
DBMS_OUTPUT.PUT_LINE('Input: ' || input_str);
DBMS_OUTPUT.PUT_LINE('MD5 Hash: ' || hash_result);
END;
RAW
语法
FUNCTION md5(input IN RAW) RETURN RAW;
参数说明
参数 | 说明 |
input | 待计算哈希的RAW类型数据。 |
示例
DECLARE
input_data RAW(100);
hash_result RAW(100);
BEGIN
input_data := UTL_RAW.CAST_TO_RAW('Hello World');
hash_result := DBMS_OBFUSCATION_TOOLKIT.MD5(input => input_data);
DBMS_OUTPUT.PUT_LINE('Input RAW: ' || input_data);
DBMS_OUTPUT.PUT_LINE('MD5 Hash RAW: ' || hash_result);
END;
MD5 Procedure
计算VARCHAR2或RAW类型的数据的MD5哈希值。
VARCHAR2
语法
PROCEDURE md5(input_string IN VARCHAR2, checksum_string INOUT VARCHAR2);
参数说明
参数 | 说明 |
input_string | 待计算哈希的VARCHAR2类型数据。 |
checksum_string | 输出参数,VARCHAR2类型,返回的MD5哈希值。 |
示例
DECLARE
input_str VARCHAR2(100) := 'Hello World';
hash_result VARCHAR2(100);
BEGIN
DBMS_OBFUSCATION_TOOLKIT.MD5(input_string => input_str, checksum_string => hash_result);
DBMS_OUTPUT.PUT_LINE('Input: ' || input_str);
DBMS_OUTPUT.PUT_LINE('MD5 Hash: ' || hash_result);
END;
RAW
语法
PROCEDURE md5(input IN RAW, checksum INOUT RAW);
参数说明
参数 | 说明 |
input | 待计算哈希的RAW类型数据。 |
checksum | 输出参数,RAW类型,返回的MD5哈希值。 |
示例
DECLARE
input_data RAW(100);
hash_result RAW(100);
BEGIN
input_data := UTL_RAW.CAST_TO_RAW('Hello World');
DBMS_OBFUSCATION_TOOLKIT.MD5(input => input_data, checksum => hash_result);
DBMS_OUTPUT.PUT_LINE('Input RAW: ' || input_data);
DBMS_OUTPUT.PUT_LINE('MD5 Hash RAW: ' || hash_result);
END;
DESGetKey Function
生成用于VARCHAR2或RAW格式数据的DES加密密钥。
VARCHAR2
语法
FUNCTION DESGetKey(seed_string IN VARCHAR2) RETURN VARCHAR2;
参数说明
参数 | 说明 |
seed | 可选的种子值,用于生成密钥。 |
示例
DECLARE
des_key VARCHAR2(100);
custom_seed VARCHAR2(10) := 'myseed123';
BEGIN
des_key := DBMS_OBFUSCATION_TOOLKIT.DESGetKey(seed_string => custom_seed);
DBMS_OUTPUT.PUT_LINE('Generated DES Key with seed: ' || des_key);
END;
RAW
语法
FUNCTION DESGetKey(seed IN RAW) RETURN RAW;
参数说明
参数 | 说明 |
seed | 可选的种子值,用于生成密钥。 |
示例
DECLARE
des_key RAW(100);
custom_seed RAW(10);
BEGIN
custom_seed := UTL_RAW.CAST_TO_RAW('myseed123');
des_key := DBMS_OBFUSCATION_TOOLKIT.DESGetKey(seed => custom_seed);
DBMS_OUTPUT.PUT_LINE('Generated DES Key RAW with seed: ' || des_key);
END;
DESGetKey Procedure
生成用于VARCHAR2或RAW格式数据的DES加密密钥。
VARCHAR2
语法
PROCEDURE DESGetKey(seed_string IN VARCHAR2,
key OUT VARCHAR2);
参数说明
参数 | 说明 |
seed_string | 可选的种子值,用于生成密钥。 |
key | 输出参数,生成的密钥。 |
示例
DECLARE
des_key VARCHAR2(100);
custom_seed VARCHAR2(10) := 'myseed123';
BEGIN
DBMS_OBFUSCATION_TOOLKIT.DESGetKey(seed_string => custom_seed, key => des_key);
DBMS_OUTPUT.PUT_LINE('Generated DES Key with seed: ' || des_key);
END;
RAW
语法
PROCEDURE DESGetKey(seed IN RAW,
key OUT RAW);
参数说明
参数 | 说明 |
seed | 可选的种子值,用于生成密钥。 |
key | 输出参数,生成的密钥。 |
示例
DECLARE
des_key RAW(100);
custom_seed RAW(10);
BEGIN
custom_seed := UTL_RAW.CAST_TO_RAW('myseed123');
DBMS_OBFUSCATION_TOOLKIT.DESGetKey(seed => custom_seed, key => des_key);
DBMS_OUTPUT.PUT_LINE('Generated DES Key RAW with seed: ' || des_key);
END;
DES3GetKey Function
生成用于VARCHAR2或RAW格式数据的3DES加密密钥。
VARCHAR2
语法
FUNCTION DES3GetKey(which IN PLS_INTEGER DEFAULT TwoKeyMode,
seed_string IN VARCHAR2)
RETURN VARCHAR2;
参数说明
参数 | 说明 |
which | 指定3DES模式:
|
seed_string | 可选的种子值,用于生成密钥。 |
示例
DECLARE
des3_key VARCHAR2(100);
custom_seed VARCHAR2(10) := 'myseed123';
BEGIN
des3_key := DBMS_OBFUSCATION_TOOLKIT.DES3GetKey(
which => DBMS_OBFUSCATION_TOOLKIT.ThreeKeyMode,
seed => custom_seed
);
DBMS_OUTPUT.PUT_LINE('Generated 3DES ThreeKey: ' || des3_key);
END;
RAW
语法
FUNCTION DES3GetKey(which IN PLS_INTEGER DEFAULT TwoKeyMode,
seed IN RAW)
RETURN RAW;
参数说明
参数 | 说明 |
which | 指定3DES模式:
|
seed | 可选的种子值,用于生成密钥。 |
示例
DECLARE
des3_key RAW(100);
custom_seed RAW(10);
BEGIN
custom_seed := UTL_RAW.CAST_TO_RAW('myseed123');
des3_key := DBMS_OBFUSCATION_TOOLKIT.DES3GetKey(
which => DBMS_OBFUSCATION_TOOLKIT.ThreeKeyMode,
seed => custom_seed
);
DBMS_OUTPUT.PUT_LINE('Generated 3DES ThreeKey RAW: ' || des3_key);
END;
DES3GetKey Procedure
生成用于VARCHAR2或RAW格式数据的3DES加密密钥。
VARCHAR2
语法
PROCEDURE DES3GetKey(which IN PLS_INTEGER DEFAULT TwoKeyMode,
seed_string IN VARCHAR2,
key OUT VARCHAR2);
参数说明
参数 | 说明 |
which | 指定3DES模式:
|
seed_string | 可选的种子值,用于生成密钥。 |
key | 输出参数,生成的密钥。 |
示例
DECLARE
des3_key VARCHAR2(100);
custom_seed VARCHAR2(10) := 'myseed123';
BEGIN
DBMS_OBFUSCATION_TOOLKIT.DES3GetKey(
which => DBMS_OBFUSCATION_TOOLKIT.ThreeKeyMode,
seed => custom_seed,
key => des3_key
);
DBMS_OUTPUT.PUT_LINE('Generated 3DES ThreeKey: ' || des3_key);
END;
RAW
语法
PROCEDURE DES3GetKey(which IN PLS_INTEGER DEFAULT TwoKeyMode,
seed IN RAW,
key OUT RAW);
参数说明
参数 | 说明 |
which | 指定3DES模式:
|
seed | 可选的种子值,用于生成密钥。 |
key | 输出参数,生成的密钥。 |
示例
DECLARE
des3_key RAW(100);
custom_seed RAW(10);
BEGIN
custom_seed := UTL_RAW.CAST_TO_RAW('myseed123');
DBMS_OBFUSCATION_TOOLKIT.DES3GetKey(
which => DBMS_OBFUSCATION_TOOLKIT.ThreeKeyMode,
seed => custom_seed,
key => des3_key
);
DBMS_OUTPUT.PUT_LINE('Generated 3DES ThreeKey RAW: ' || des3_key);
END;