2014-01-07 73 views
0

惠加密解密图像。我是oracle的新手。目前,我已经创建了一个用于加密和解密数据库中文本的包。现在我想加密和解密已经存储在我的数据库中的图像。如何在Oracle 11g中

这是我使用的加密和解密文本包。

CREATE OR REPLACE PACKAGE enc_dec 
AS 
    FUNCTION encrypt (p_plainText VARCHAR2) RETURN RAW DETERMINISTIC; 
    FUNCTION decrypt (p_encryptedText RAW) RETURN VARCHAR2 DETERMINISTIC; 
END; 
/

CREATE OR REPLACE PACKAGE BODY enc_dec 
AS 
    encryption_type PLS_INTEGER := DBMS_CRYPTO.ENCRYPT_DES 
           + DBMS_CRYPTO.CHAIN_CBC 
           + DBMS_CRYPTO.PAD_PKCS5; 
/* 
    ENCRYPT_DES is the encryption algorithem. Data Encryption Standard. Block cipher. 
    Uses key length of 56 bits. 
    CHAIN_CBC Cipher Block Chaining. Plaintext is XORed with the previous ciphertext 
    block before it is encrypted. 
    PAD_PKCS5 Provides padding which complies with the PKCS #5: Password-Based 
    Cryptography Standard 
*/ 
encryption_key  RAW (32) := UTL_RAW.cast_to_raw('MyEncryptionKey'); 
-- The encryption key for DES algorithem, should be 8 bytes or more. s3curiTKEY4App 

FUNCTION encrypt (p_plainText VARCHAR2) RETURN RAW DETERMINISTIC 
IS 
    encrypted_raw  RAW (2000); 
BEGIN 
    encrypted_raw := DBMS_CRYPTO.ENCRYPT 
    (
     src => UTL_RAW.CAST_TO_RAW (p_plainText), 
     typ => encryption_type, 
     key => encryption_key 
    ); 
    RETURN encrypted_raw; 
END encrypt; 
FUNCTION decrypt (p_encryptedText RAW) RETURN VARCHAR2 DETERMINISTIC 
IS 
    decrypted_raw  RAW (2000); 
BEGIN 
    decrypted_raw := DBMS_CRYPTO.DECRYPT 
    (
     src => p_encryptedText, 
     typ => encryption_type, 
     key => encryption_key 
    ); 
    RETURN (UTL_RAW.CAST_TO_VARCHAR2 (decrypted_raw)); 
END decrypt; 

END; /

那么,什么是加密和解密的图像的功能?你可以告诉我查询吗?

回答

0

的图像是二进制文件。由于这些文件通常大于4k字节,因此最可能使用BLOB数据类型。在这种情况下,您可以使用适用于BLOB的程序DBMS_CRYPTO.encrypt