如何在oracle 11g中加密解密图像

时间:2014-01-07 09:37:04

标签: oracle encryption

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

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

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; /

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

1 个答案:

答案 0 :(得分:0)

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