SYS.DBMS_CRYPTO.ENCRYPT(request_des,request_src, SYS.DBMS_CRYPTO.DES_CBC_PKCS5, raw_key);
####
ecryption_type PLS_INTEGER := SYS.DBMS_CRYPTO.DES_CBC_PKCS5;
v_key RAW(16) := null;
PROCEDURE setkey (p_key IN VARCHAR2)
IS
BEGIN
IF p_key IS not null THEN
v_key := UTL_RAW.cast_to_raw(p_key);
dbms_output.put_line(v_key);
END IF;
END setkey;
FUNCTION decrypt( p_data IN RAW ) RETURN VARCHAR2 DETERMINISTIC
IS
l_decrypted RAW(32767);
BEGIN
l_decrypted := sys.DBMS_CRYPTO.decrypt
( src => p_data,
typ => ecryption_type,
KEY => v_key );
RETURN UTL_I18N.RAW_TO_CHAR(l_decrypted,'AL32UTF8');
END decrypt;
execute dbcrypt.setkey('mysecret');
select dbcrypt.decrypt(encrypted_column) from my_table where rownum < 10;
####
#!/opt/local/perl/bin/perl -w
use strict;
use DBI;
use Crypt::DES;
use Crypt::CBC;
# establish DB connection
my $dbname = 'dbi:Oracle:my_db.world';
my $user = 'myuser';
my $password = 'mypass';
my $dbh = DBI->connect($dbname, $user, $password);
if (!$dbh)
{
die "Error connecting to database; $DBI::errstr";
}
$dbh->{LongReadLen} = 8192;
my $sql = "select encrypted_column from my_table where rownum < 10";
my @responseList = map {$_->[0]} @{$dbh->selectall_arrayref($sql)};
my $cipher = Crypt::CBC->new(-key => 'mysecret',
-cipher => 'Crypt::DES');
foreach my $cipherText (@responseList)
{
my $plaintext = $cipher->decrypt($cipherText);
print "$plaintext\n";
}
####
Ciphertext does not begin with a valid header for 'salt' header mode