`
king_tt
  • 浏览: 2228529 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle 10g 加密包 DBMS_CRYPTO

 
阅读更多

Oracle DBMS_CRYPTO

Version 10.2

 
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;
分享到:
评论

相关推荐

    oracle10g加密解密[归类].pdf

    Oracle 10g 提供了 `DBMS_CRYPTO` 包,它包含了用于加密和解密数据的函数。在示例中,`DECRYPT` 和 `ENCRYPT` 是自定义函数,它们分别用于解密和加密数据。`ENCRYPT` 函数使用 `UTL_I18N.STRING_TO_RAW` 将输入的...

    Oracle PL/SQL常用47个工具包

    35. **DBMS_CRYPTO.ENCRYPT 和 DBMS_CRYPTO.DECRYPT**: 加密和解密数据。 36. **DBMS_METADATA.SET_TRANSFORM_PARAM**: 设置元数据提取的转换参数。 37. **DBMS_STATS.EXPLAIN_PLAN**: 解析执行计划,用于性能分析...

    Oracle储存过程包加解密实现

    首先,Oracle的DBMS_CRYPTO包提供了各种加密和哈希函数,可以用来加密和解密数据。这个包包含了多种加密算法,如AES(高级加密标准)、DES(数据加密标准)和RC4等。例如,要对一个字符串进行AES加密,可以使用以下...

    oracle加密解密

    在 Oracle 10g 中,主要通过 `DBMS_CRYPTO` 包来实现数据的加密和解密操作。该包提供了多种加密算法的支持,如 AES(高级加密标准)等。 ##### 1. 加密函数 ENCRYPT ```sql CREATE OR REPLACE FUNCTION ENCRYPT...

    Oracle10g数据库的加密策略.pdf

    总的来说,Oracle 10g 的加密策略是通过利用 dbms-crypto 软件包提供的功能,结合合适的加密算法,实现对敏感数据的加密存储,同时管理好密钥,以增强数据库的安全性。这样的策略对于保护用户信息,特别是金融、个人...

    Oracle 存储过程 实现加密

    Oracle数据库提供了一系列内置的加密函数,如DBMS_CRYPTO包中的函数,可以用于实现数据的加密和解密。 - **DBMS_CRYPTO.ENCRYPT**:用于加密数据。 - **DBMS_CRYPTO.DECRYPT**:用于解密数据。 这些函数需要指定...

    Oralce11g数据库常见内置程序包

    2. **Flashback Technologies**:自Oracle 10g开始,利用`DBMS_FLASHBACK`等程序包支持数据库的闪回查询和恢复。 3. **Automatic Diagnostic Repository (ADR)**:自Oracle 11g开始,使用`DBMS_SQLDIAG`等程序包进行...

    oracle数据加密

    Oracle10g TDE技术使用加密钱包(Wallet)来管理加密密钥,通过内置包dbms_crypto进行加密和解密操作。 Oracle的TDE技术为数据库管理员提供了方便,他们可以通过TDE直接加密整个数据文件或特定的数据表,这样即使...

    示例详解Oracle中的加密包及算法.doc

    在Oracle数据库中,常用的加密工具和包包括DBMS_CRYPTO,提供了对各种加密算法的支持,如AES、DES等。此外,Oracle也提供了透明数据加密(Transparent Data Encryption, TDE)功能,可以在数据存储时自动加密,解密...

    oracle wrapped 解密工具

    这个工具在Oracle 10g、11g和12c版本中均通过了测试,确保了广泛的兼容性,并且可以在运行Windows 98及更高版本的操作系统(包括32位和64位)上顺畅运行。 Oracle数据库中的加密机制是为了提高安全性,防止未授权的...

    Oracle数据库加密技术[收集].pdf

    - Oracle 10g引入了更强大的内置软件包DBMS-CRYPTO,增强了加密功能和算法选择。 2. **加密算法**: - DOTK支持DES和3DES加密算法。 - DBMS-CRYPTO不仅支持上述算法,还支持更安全的256位AES算法,提供了更高的...

    Oracle数据库在账务管理系统中的安全策略研究.pdf

    Oracle数据库自带加密软件包,如DBMS_OBFUSCATION_TOOLKIT(在9i及更早版本)和DBMS_CRYPTO(在10g及以上版本),提供了多种加密算法和数据类型支持。 其次,用户安全策略关注的是账户管理和权限分配。合理的用户...

    Oracle解密Unwrap

    1. **理解Oracle加密机制**:Oracle数据库使用了多种加密算法,如Advanced Encryption Standard (AES)等,来保护PL/SQL源代码。加密过程发生在数据库级别,通常由DBMS_CRYPTO包提供支持。 2. **使用Unwrap工具**:...

    oracledemo.zip

    Oracle提供了多种加密选项,包括使用内置的DBMS_CRYPTO包进行加密,以及使用Oracle Wallet管理用户认证信息。Oracle Wallet是一种安全的容器,用于存储用户名、密码、证书和其他敏感信息,它提供了一种安全的方式来...

    sql面试题\oracle面试题目

    - 使用`DBMS_CRYPTO`包提供的加密功能。 - 使用`UTL_ENCODE`包提供的编码功能。 #### 24. FUNCTION, PROCEDURE与PACKAGE的区别 - **FUNCTION**:返回一个值。 - **PROCEDURE**:执行一系列操作,无返回值。 - **...

    NCC1909系统管理员和普通用户密码重置与解锁oracle脚本 NCC19

    Oracle提供了一套完整的加密机制,包括DBMS_CRYPTO包,可以生成哈希值或进行对称加密。在密码重置过程中,可能需要先生成一个新的密钥,然后使用该密钥对新密码进行加密,最后更新数据库中的加密密码字段。 接下来...

    数据库攻防之道Oracle

    本书可能涵盖的内容还包括Oracle的内置安全特性,如RAC(Real Application Clusters)的多节点安全、DBMS_CRYPTO用于加密的包、Fine-Grained Auditing(FGA)的详细审计记录,以及SecureFiles和Advanced Compression...

    NCC1909系统管理员和普通用户密码重置与解锁oracle脚本

    这通常涉及到Oracle的内置加密函数,如DBMS_CRYPTO。 2. **更新脚本**:执行完生成密钥函数后,接下来的更新脚本会使用这个密钥对指定用户的密码进行修改,并可能包含解锁用户账户的语句。在Oracle中,重置密码的...

Global site tag (gtag.js) - Google Analytics