oracle9.1的加密解密包的用法

原创 2005年05月25日 17:17:00

oracle9.1的加密解密包
双向加密算法
dbms_obfuscation_toolkit.desencrypt
dbms_obfuscation_toolkit.desdecrypt

dbms_obfuscation_toolkit.DES3Encrypt
dbms_obfuscation_toolkit.DES3Decrypt

单向加密算法
dbms_obfuscation_toolkit.md5

具体用法参见以下函数
--MD5加密
create or replace function
encrypt_md5(p_text varchar2) return varchar2 is
begin
 --添加RawToHex(UTL_RAW.CAST_TO_RAW())为得是加密后的输出数据规范些
 --input_string必须要有,否则没有办法区分到底是调用那个md5
 return RawToHex(UTL_RAW.CAST_TO_RAW(dbms_obfuscation_toolkit.MD5(input_string=>p_text)));
end;

--DES加密
create or replace function
encrypt_des(p_text varchar2, p_key varchar2) return varchar2 is
begin
 return UTL_RAW.CAST_TO_RAW(dbms_obfuscation_toolkit.DESENCRYPT(input_string => p_text,
 key_string => p_key));
end;
--DES解密
create or replace function decrypt_data(p_text varchar2,p_key varchar2) return varchar2 is
v_text varchar2(4000);
begin
dbms_obfuscation_toolkit.DESDECRYPT(
input_string => UTL_RAW.CAST_TO_varchar2(p_text),
key_string => p_key,
decrypted_string=> v_text);
return v_text;
end;

附录oracle9.2文档自带的DES3加密解密实例:
DECLARE
   input_string        VARCHAR2(16) := 'tigertigertigert';
   raw_input           RAW(128) := UTL_RAW.CAST_TO_RAW(input_string);
   key_string          VARCHAR2(16)  := 'scottscottscotts';
   raw_key             RAW(128) := UTL_RAW.CAST_TO_RAW(key_string);
encrypted_raw               RAW(2048);
   encrypted_string            VARCHAR2(2048);
decrypted_raw               RAW(2048);
   decrypted_string            VARCHAR2(2048);
   error_in_input_buffer_length EXCEPTION;
   PRAGMA EXCEPTION_INIT(error_in_input_buffer_length, -28232);
   INPUT_BUFFER_LENGTH_ERR_MSG VARCHAR2(100) :=
    '*** DES INPUT BUFFER NOT A MULTIPLE OF 8 BYTES - IGNORING EXCEPTION ***';
   double_encrypt_not_permitted EXCEPTION;
   PRAGMA EXCEPTION_INIT(double_encrypt_not_permitted, -28233);
   DOUBLE_ENCRYPTION_ERR_MSG VARCHAR2(100) :=
    '*** CANNOT DOUBLE ENCRYPT DATA - IGNORING EXCEPTION ***';

-- 1. Begin testing raw data encryption and decryption
   BEGIN
   dbms_output.put_line('> ========= BEGIN TEST RAW DATA =========');
   dbms_output.put_line('> Raw input                        : ' ||
                 UTL_RAW.CAST_TO_VARCHAR2(raw_input));
   BEGIN
      dbms_obfuscation_toolkit.DES3Encrypt(input => raw_input,
               key => raw_key, encrypted_data => encrypted_raw );
      dbms_output.put_line('> encrypted hex value              : ' ||
               rawtohex(encrypted_raw));
      dbms_obfuscation_toolkit.DES3Decrypt(input => encrypted_raw,
               key => raw_key, decrypted_data => decrypted_raw);
      dbms_output.put_line('> Decrypted raw output             : ' ||
                    UTL_RAW.CAST_TO_VARCHAR2(decrypted_raw));
      dbms_output.put_line('>  ');     
      if UTL_RAW.CAST_TO_VARCHAR2(raw_input) =
                    UTL_RAW.CAST_TO_VARCHAR2(decrypted_raw) THEN
         dbms_output.put_line('> Raw DES3 Encyption and Decryption successful');
      END if;
   EXCEPTION
      WHEN error_in_input_buffer_length THEN
             dbms_output.put_line('> ' || INPUT_BUFFER_LENGTH_ERR_MSG);
   END;
   dbms_output.put_line('>  ');
END;

-- 2. Begin testing string data encryption and decryption
   dbms_output.put_line('> ========= BEGIN TEST STRING DATA =========');

   BEGIN
      dbms_output.put_line('> input string                     : '
                           || input_string);
      dbms_obfuscation_toolkit.DES3Encrypt(
               input_string => input_string,
               key_string => key_string,
               encrypted_string => encrypted_string );
      dbms_output.put_line('> encrypted hex value              : ' ||
                   rawtohex(UTL_RAW.CAST_TO_RAW(encrypted_string)));
      dbms_obfuscation_toolkit.DES3Decrypt(
               input_string => encrypted_string,
               key_string => key_string,
               decrypted_string => decrypted_string );
      dbms_output.put_line('> decrypted string output          : ' ||
                 decrypted_string);
      if input_string = decrypted_string THEN
         dbms_output.put_line('> String DES3 Encyption and Decryption
successful');
      END if;
   EXCEPTION
      WHEN error_in_input_buffer_length THEN
             dbms_output.put_line(' ' || INPUT_BUFFER_LENGTH_ERR_MSG);
   END;
   dbms_output.put_line('>  ');
END;

JAVA加密解密要用到的JAR包

3DES加密解密算法  jce.jar   security/US_export_policy.jar   security/local_policy.jar   ext/sunjce_provide...
  • bigtree_3721
  • bigtree_3721
  • 2016年02月22日 15:39
  • 2470

lattice 包的用法

1.library("lattice")#加载包。 d xyplot(y~x,data=d)#xy的散点图 xyplot(y~x|z,data=d,pch=c(1,3,4)) xyplo...
  • lishangyin88
  • lishangyin88
  • 2017年04月20日 13:23
  • 265

CI内的加密解密用法

首先我们找到配置文件application/config/config.php ,找到如下代码: $config['encryption_key'] = "YOUR KEY"; 在控制器里面...
  • hellovisaya
  • hellovisaya
  • 2017年05月18日 17:53
  • 136

java中包的使用

Java允许把多个类收集在一起构成为一组,称作包(package),包便于组织任务,以及使自己的任务和其他人提供的代码库相分离 包是一种组织类的方式,包中可以包含任意数量的类,一般包中的类的用途是相...
  • mylovestart
  • mylovestart
  • 2013年02月06日 18:07
  • 6887

Oracle中包的使用

Oracle中包的使用 包头 创建语法 create  [or  replace]  package  package_name {IS|AS} type_definit...
  • dzy21
  • dzy21
  • 2016年07月22日 08:42
  • 3449

爬虫用到的一些包(不定时更新)

■win32api 说明:64位机上运行32位时所用到的包 安装方法:pip install win32api ■requests  说明:用于异步取得页面内容 安装方法:pip install ...
  • songbob
  • songbob
  • 2017年09月04日 11:30
  • 152

加密解密工具类 EncryptUtil

加密解密工具类
  • luzhenyuxfcy
  • luzhenyuxfcy
  • 2016年02月18日 10:56
  • 1544

包的用法

·当在文件的起始处写package mypackage;就表示你在声明该编译单元是名为mypackage的程序库的一部分。换句话来说,你正在声明该编辑单元中的public类名位于mypackage名称...
  • wensheng_zh2007
  • wensheng_zh2007
  • 2008年04月22日 23:36
  • 512

Sql语句绝妙用法

下列语句部分是Mssql语句,不可以在access中使用。SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,U...
  • psongchao
  • psongchao
  • 2006年08月16日 13:07
  • 2119

DBMS_Job包的用法

DBMS_Job包的用法  包含以下子过程: Broken()过程。change()过程。Interval()过程。Isubmit()过程。Next_Date()过程。Remove()过程。Run()...
  • llmmysun
  • llmmysun
  • 2004年10月14日 15:10
  • 673
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle9.1的加密解密包的用法
举报原因:
原因补充:

(最多只允许输入30个字)