General Information |
Source |
{ORACLE_HOME}/rdbms/admin/dbmsobtk.sql |
Algorithm Constants |
Name |
Data Type |
Value |
Hash Functions |
HASH_MD4 (128 bit hash) |
PLS_INTEGER |
1 |
HASH_MD5 (128 bit hash) |
PLS_INTEGER |
2 |
HASH_SH1 (160 bit hash) |
PLS_INTEGER |
3 |
MAC Functions |
HMAC_MD5 (128 bit hash) |
PLS_INTEGER |
1 |
HMAC_SH1 (160 bit hash) |
PLS_INTEGER |
2 |
Block Cipher Algorithms |
ENCRYPT_DES (56 bit) |
PLS_INTEGER |
1; -- 0x0001 |
ENCRYPT_3DES_2KEY (128 bit) |
PLS_INTEGER |
2; -- 0x0002 |
ENCRYPT_3DES |
PLS_INTEGER |
3; -- 0x0003 |
ENCRYPT_AES128 (128 bit) |
PLS_INTEGER |
6; -- 0x0006 |
ENCRYPT_AES192 (192 bit) |
PLS_INTEGER |
7; -- 0x0007 |
ENCRYPT_AES256 (256 bit) |
PLS_INTEGER |
8; -- 0x0008 |
ENCRYPT_RC4 (Stream Cipher) |
PLS_INTEGER |
129; -- 0x0081 |
Block Cipher Chaining Modifiers |
CHAIN_CBC (Cipher Block Chaining) |
PLS_INTEGER |
256; -- 0x0100 |
CHAIN_CFB (Cipher Feedback) |
PLS_INTEGER |
512; -- 0x0200 |
CHAIN_ECB (Electronic cookbook) |
PLS_INTEGER |
768; -- 0x0300 |
CHAIN_OFB (Output Feedback) |
PLS_INTEGER |
1024; -- 0x0400 |
Block Cipher Padding Modifiers |
PAD_PKCS5 (Complies with PKCS #5) |
PLS_INTEGER |
4096; -- 0x1000 |
PAD_NONE (No Dadding) |
PLS_INTEGER |
8192; -- 0x2000 |
PAD_ZERO (Pad with Zeros) |
PLS_INTEGER |
12288; -- 0x3000 |
Block Ciphers Suites |
DES_CBC_PKCS5 |
PLS_INTEGER |
ENCRYPT_DES + CHAIN_CBC + PAD_PKCS5; |
DES3_CBC_PKCS5 |
PLS_INTEGER |
ENCRYPT_3DES + CHAIN_CBC + PAD_PKCS5; |
|
Dependencies |
DBMS_CRYPTO_FFI |
DECRYPTBYTES |
ENCRYPTBYTES |
DECRYPT |
ENCRYPT |
UTL_RAW |
|
Exceptions |
Error Code |
Reason |
28827 |
The specified cipher suite is not defined |
28829 |
No value has been specified for the cipher suite to be used |
28233 |
Source data was previously encrypted |
28234 |
DES: Specified key size too short. DES keys must be at least 8 bytes (64 bits). AES: Specified key size is not supported. AES keys must be 128, 192, or 256 bits |
28239 |
The encryption key has not been specified or contains a NULL value |
|
|
DECRYPT |
Decrypt crypt text data using stream or block cipher with user supplied key and optional iv
Overload 1 |
dbms_crypto.decrypt(src IN RAW, typ IN PLS_INTEGER, key IN RAW, iv IN RAW DEFAULT NULL) RETURN RAW; |
See Encrypt Overload 1 demo |
Overload 2 |
dbms_crypto.decrypt(dst IN OUT NOCOPY BLOB, src IN BLOB, typ IN PLS_INTEGER, key IN RAW, iv IN RAW DEFAULT NULL); |
|
Overload 3 |
dbms_crypto.decrypt (dst IN OUT NOCOPY CLOB CHARACTER SET ANY_CS, src IN BLOB, typ IN PLS_INTEGER, key IN RAW, iv IN RAW DEFAULT NULL); |
|
|
ENCRYPT |
Encrypt plain text data using stream or block cipher with user supplied key and optional iv
Overload 1 |
dbms_crypto.encrypt(src IN RAW, typ IN PLS_INTEGER, key IN RAW, iv IN RAW DEFAULT NULL) RETURN RAW; |
set serveroutput on
DECLARE l_credit_card_no VARCHAR2(19) := '1234-5678-9012-3456'; l_ccn_raw RAW(128) := utl_raw.cast_to_raw(l_credit_card_no); l_key RAW(128) := utl_raw.cast_to_raw('abcdefgh');
l_encrypted_raw RAW(2048); l_decrypted_raw RAW(2048); BEGIN dbms_output.put_line('Original : ' || l_credit_card_no);
l_encrypted_raw :=dbms_crypto.encrypt(l_ccn_raw, dbms_crypto.des_cbc_pkcs5, l_key);
dbms_output.put_line('Encrypted : ' || RAWTOHEX(utl_raw.cast_to_raw(l_encrypted_raw)));
l_decrypted_raw :=dbms_crypto.decrypt(src => l_encrypted_raw, typ => dbms_crypto.des_cbc_pkcs5, key => l_key);
dbms_output.put_line('Decrypted : ' || utl_raw.cast_to_varchar2(l_decrypted_raw)); END; / |
set serveroutput on
DECLARE enc_val RAW(2000); l_key RAW(2000); l_key_len NUMBER := 128/8;-- convert bits to bytes l_mod NUMBER :=dbms_crypto.ENCRYPT_AES128 +dbms_crypto.CHAIN_CBC+dbms_crypto.PAD_PKCS5;
BEGIN l_key :=dbms_crypto.randombytes(l_key_len);
enc_val :=dbms_crypto.encrypt( utl_i18n.string_to_raw('1234-5678-9012-3456', 'AL32UTF8'), l_mod, l_key);
dbms_output.put_line(enc_val); END; / |
Overload 2 |
dbms_crypto.encrypt(dst IN OUT NOCOPY BLOB, src IN BLOB, typ IN PLS_INTEGER, key IN RAW, iv IN RAW DEFAULT NULL); |
|
Overload 3 |
dbms_crypto.encrypt(dst IN OUT NOCOPY BLOB, src IN CLOB CHARACTER SET ANY_CS, typ IN PLS_INTEGER, key IN RAW, iv IN RAW DEFAULT NULL); |
|
dbms_crypto.encrypt(UTL_RAW.CAST_TO_RAW(CONVERT('XXX','AL32UTF8')),typ,key); |
HASH |
Hash source data by cryptographic hash type
Overload 1 |
dbms_crypto.hash(src IN RAW, typ IN PLS_INTEGER) RETURN RAW; |
|
Overload 2 |
dbms_crypto.hash(src IN BLOB, typ IN PLS_INTEGER) RETURN RAW; |
|
Overload 3 |
dbms_crypto.hash(src IN CLOB CHARACTER SET ANY_CS, typ IN PLS_INTEGER) RETURN RAW; |
|
|
MAC |
Message Authentication Code algorithms provide keyed message protection
Overload 1 |
dbms_crypto.mac(src IN RAW, typ IN PLS_INTEGER, key IN RAW) RETURN RAW; |
|
Overload 2 |
dbms_crypto.mac(src IN BLOB, typ IN PLS_INTEGER, key IN RAW) RETURN RAW; |
|
Overload 3 |
dbms_crypto.mac(src IN CLOB CHARACTER SET ANY_CS, typ IN PLS_INTEGER, key IN RAW) RETURN RAW; |
|
|
RANDOMBYTES |
Returns a raw value containing a pseudo-random sequence of bytes |
dbms_crypto.randomnytes(number_bytes PLS_INTEGER) RETURN RAW; |
SELECTdbms_crypto.randombytes(1) FROM dual; SELECT LENGTH(dbms_crypto.randombytes(1)) FROM dual;
SELECT dbms_crypto.randombytes(28) FROM dual; SELECT LENGTH(dbms_crypto.randombytes(28)) FROM dual;
SELECT dbms_crypto.randombytes(64) FROM dual; SELECT LENGTH(dbms_crypto.randombytes(64)) FROM dual; |
|
RANDOMINTEGER |
Returns a random BINARY_INTEGER |
dbms_crypto.randominteger RETURN NUMBER; |
SELECTdbms_crypto.randomintegerFROM dual; |
|
RANDOMNUMBER |
Returns a randomOracleNumber |
dbms_crypto.randomnumber RETURN NUMBER; |
SELECTdbms_crypto.randomnumberFROM dual; |
相关推荐
Oracle 10g 提供了 `DBMS_CRYPTO` 包,它包含了用于加密和解密数据的函数。在示例中,`DECRYPT` 和 `ENCRYPT` 是自定义函数,它们分别用于解密和加密数据。`ENCRYPT` 函数使用 `UTL_I18N.STRING_TO_RAW` 将输入的...
35. **DBMS_CRYPTO.ENCRYPT 和 DBMS_CRYPTO.DECRYPT**: 加密和解密数据。 36. **DBMS_METADATA.SET_TRANSFORM_PARAM**: 设置元数据提取的转换参数。 37. **DBMS_STATS.EXPLAIN_PLAN**: 解析执行计划,用于性能分析...
首先,Oracle的DBMS_CRYPTO包提供了各种加密和哈希函数,可以用来加密和解密数据。这个包包含了多种加密算法,如AES(高级加密标准)、DES(数据加密标准)和RC4等。例如,要对一个字符串进行AES加密,可以使用以下...
在 Oracle 10g 中,主要通过 `DBMS_CRYPTO` 包来实现数据的加密和解密操作。该包提供了多种加密算法的支持,如 AES(高级加密标准)等。 ##### 1. 加密函数 ENCRYPT ```sql CREATE OR REPLACE FUNCTION ENCRYPT...
总的来说,Oracle 10g 的加密策略是通过利用 dbms-crypto 软件包提供的功能,结合合适的加密算法,实现对敏感数据的加密存储,同时管理好密钥,以增强数据库的安全性。这样的策略对于保护用户信息,特别是金融、个人...
Oracle数据库提供了一系列内置的加密函数,如DBMS_CRYPTO包中的函数,可以用于实现数据的加密和解密。 - **DBMS_CRYPTO.ENCRYPT**:用于加密数据。 - **DBMS_CRYPTO.DECRYPT**:用于解密数据。 这些函数需要指定...
2. **Flashback Technologies**:自Oracle 10g开始,利用`DBMS_FLASHBACK`等程序包支持数据库的闪回查询和恢复。 3. **Automatic Diagnostic Repository (ADR)**:自Oracle 11g开始,使用`DBMS_SQLDIAG`等程序包进行...
Oracle10g TDE技术使用加密钱包(Wallet)来管理加密密钥,通过内置包dbms_crypto进行加密和解密操作。 Oracle的TDE技术为数据库管理员提供了方便,他们可以通过TDE直接加密整个数据文件或特定的数据表,这样即使...
在Oracle数据库中,常用的加密工具和包包括DBMS_CRYPTO,提供了对各种加密算法的支持,如AES、DES等。此外,Oracle也提供了透明数据加密(Transparent Data Encryption, TDE)功能,可以在数据存储时自动加密,解密...
这个工具在Oracle 10g、11g和12c版本中均通过了测试,确保了广泛的兼容性,并且可以在运行Windows 98及更高版本的操作系统(包括32位和64位)上顺畅运行。 Oracle数据库中的加密机制是为了提高安全性,防止未授权的...
- Oracle 10g引入了更强大的内置软件包DBMS-CRYPTO,增强了加密功能和算法选择。 2. **加密算法**: - DOTK支持DES和3DES加密算法。 - DBMS-CRYPTO不仅支持上述算法,还支持更安全的256位AES算法,提供了更高的...
Oracle数据库自带加密软件包,如DBMS_OBFUSCATION_TOOLKIT(在9i及更早版本)和DBMS_CRYPTO(在10g及以上版本),提供了多种加密算法和数据类型支持。 其次,用户安全策略关注的是账户管理和权限分配。合理的用户...
1. **理解Oracle加密机制**:Oracle数据库使用了多种加密算法,如Advanced Encryption Standard (AES)等,来保护PL/SQL源代码。加密过程发生在数据库级别,通常由DBMS_CRYPTO包提供支持。 2. **使用Unwrap工具**:...
Oracle提供了多种加密选项,包括使用内置的DBMS_CRYPTO包进行加密,以及使用Oracle Wallet管理用户认证信息。Oracle Wallet是一种安全的容器,用于存储用户名、密码、证书和其他敏感信息,它提供了一种安全的方式来...
- 使用`DBMS_CRYPTO`包提供的加密功能。 - 使用`UTL_ENCODE`包提供的编码功能。 #### 24. FUNCTION, PROCEDURE与PACKAGE的区别 - **FUNCTION**:返回一个值。 - **PROCEDURE**:执行一系列操作,无返回值。 - **...
Oracle提供了一套完整的加密机制,包括DBMS_CRYPTO包,可以生成哈希值或进行对称加密。在密码重置过程中,可能需要先生成一个新的密钥,然后使用该密钥对新密码进行加密,最后更新数据库中的加密密码字段。 接下来...
本书可能涵盖的内容还包括Oracle的内置安全特性,如RAC(Real Application Clusters)的多节点安全、DBMS_CRYPTO用于加密的包、Fine-Grained Auditing(FGA)的详细审计记录,以及SecureFiles和Advanced Compression...
这通常涉及到Oracle的内置加密函数,如DBMS_CRYPTO。 2. **更新脚本**:执行完生成密钥函数后,接下来的更新脚本会使用这个密钥对指定用户的密码进行修改,并可能包含解锁用户账户的语句。在Oracle中,重置密码的...