ENCRYPT¶
The ENCRYPT function or procedure uses a user-specified algorithm, key,
and optional initialization vector to encrypt RAW, BLOB or CLOB data. The signature of the ENCRYPT function is:
ENCRYPT
(<src> IN RAW, <typ> IN INTEGER, <key> IN RAW,
<iv> IN RAW DEFAULT NULL) RETURN RAW
The signature of the ENCRYPT procedure is:
ENCRYPT
(<dst> INOUT BLOB, <src> IN BLOB, <typ> IN INTEGER, <key> IN RAW,
<iv> IN RAW DEFAULT NULL)
or
ENCRYPT
(<dst> INOUT BLOB, <src> IN CLOB, <typ> IN INTEGER, <key> IN RAW,
<iv> IN RAW DEFAULT NULL)
When invoked as a procedure, ENCRYPT returns BLOB or CLOB data to a
user-specified BLOB.
Parameters
dst
dstspecifies the name of aBLOBto which the output of theENCRYPTprocedure will be written. TheENCRYPTprocedure will overwrite any existing data currently indst.
src
srcspecifies the source data that will be encrypted. If you are invokingENCRYPTas a function, specifyRAWdata; if invokingENCRYPTas a procedure, specifyBLOBorCLOBdata.
typ
typspecifies the block cipher type that will be used byENCRYPT, and any modifiers. Advanced Server supports the block cipher algorithms, modifiers and cipher suites listed below:
Block Cipher Algorithms |
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Block Cipher Modifiers |
|
|
|
|
|
Block Cipher Padding Modifiers |
|
|
|
|
|
Block Cipher Suites |
|
|
|
|
|
|
|
key
keyspecifies the encryption key.
iv
iv(optional) specifies an initialization vector. By default,ivisNULL.
Examples
The following example uses the DBMS_CRYPTO.DES_CBC_PKCS5 Block Cipher
Suite (a pre-defined set of algorithms and modifiers) to encrypt a value
retrieved from the passwords table:
CREATE TABLE passwords
(
principal VARCHAR2(90) PRIMARY KEY, -- username
ciphertext RAW(9) -- encrypted password
);
CREATE PROCEDURE set_password(username VARCHAR2, cleartext RAW) AS
typ INTEGER := DBMS_CRYPTO.DES_CBC_PKCS5;
key RAW(128) := 'my secret key';
iv RAW(100) := 'my initialization vector';
encrypted RAW(2048);
BEGIN
encrypted := dbms_crypto.encrypt(cleartext, typ, key, iv);
UPDATE passwords SET ciphertext = encrypted WHERE principal = username;
END;
ENCRYPT uses a key value of my secret key and an initialization vector
of my initialization vector when encrypting the password; specify the
same key and initialization vector when decrypting the password.