oracl hash

那个页面被墙 只好在这复制下了 


目前主流的加密方法大致有MD5、SHA-1、DES、Triple DES、AES,目前MD5、SHA-1、DES都已经有破解方法,Triple DES、AES还没有被破解的记载,其中AES是最新最安全的加密方法,最多可提供256位的加密。 

Oracle 9i提供MD5、DES、Triple DES,而Oracle 10g和10g R2提供了上面提到的所有加密方法供选择。 



鉴于以上情况,针对Oracle 10g,我的想法是使用DBMS_CRYPTO包提供的Triple DES或者AES进行加密(Oracle 9i中没有这个包)。 

与其他方法相比,这样做的优点是: 



1. Triple DES、AES是最安全的加密方法,没有被破解的记载 

2. 有可逆和不可逆两种加密选择 

3. 支持对BLOB和CLOB加密 




1.脚本 

----------------------------------------------------------------------------------------- 

加密函数 

Sql代码   收藏代码
  1. create or replace function encrypt256(v_input varchar2) return raw  
  2.   
  3. is  
  4.   
  5. v_result raw(256);  
  6.   
  7. c_key char(32) := '1q2wa3es4rz5tx6ycD*UF8tif9ogjen2';  
  8.   
  9. begin  
  10.   
  11. v_result := DBMS_CRYPTO.ENCRYPT(  
  12.   
  13. UTL_I18N.STRING_TO_RAW(v_input, 'AL32UTF8'),  
  14.   
  15. DBMS_CRYPTO.ENCRYPT_AES256+DBMS_CRYPTO.CHAIN_CBC+DBMS_CRYPTO.PAD_PKCS5,  
  16.   
  17. UTL_I18N.STRING_TO_RAW(c_key, 'AL32UTF8'));  
  18.   
  19. return v_result;  
  20.   
  21. end;  
  22.   
  23. /  




解密函数 

Sql代码   收藏代码
  1. create or replace function decrypt256(v_input raw) return varchar2  
  2.   
  3. is  
  4.   
  5. v_result raw(256);  
  6.   
  7. c_key char(32) := '1q2wa3es4rz5tx6ycD*UF8tif9ogjen2';  
  8.   
  9. begin  
  10.   
  11. v_result := DBMS_CRYPTO.DECRYPT(  
  12.   
  13. v_input,  
  14.   
  15. DBMS_CRYPTO.ENCRYPT_AES256+DBMS_CRYPTO.CHAIN_CBC+DBMS_CRYPTO.PAD_PKCS5,  
  16.   
  17. UTL_I18N.STRING_TO_RAW(c_key, 'AL32UTF8'));  
  18.   
  19. return UTL_I18N.RAW_TO_CHAR(v_result, 'AL32UTF8');  
  20.   
  21. end;  
  22.   
  23. /  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值