Welcome 微信登录

首页 / 数据库 / MySQL / Oracle 字符串加密方法

测试环境:Oracle 10g1、方法一 MD5加密
  1. create or replace function fn_md5(input_string VARCHAR2) return varchar2   
  2. IS  
  3. raw_input RAW(128) := UTL_RAW.CAST_TO_RAW(input_string);   
  4. decrypted_raw RAW(2048);   
  5. error_in_input_buffer_length EXCEPTION;   
  6. BEGIN  
  7. sys.dbms_obfuscation_toolkit.MD5(input => raw_input,checksum => decrypted_raw);   
  8. return rawtohex(decrypted_raw);   
  9. END;  
2、方法二 3des算法
  1. create or replace package PG_ENCRYPT_DECRYPT   
  2. is  
  3. iKey varchar2(8):="Oracle9i";   
  4. function GEN_RAW_KEY ( iKey in varchar2) return raw;   
  5. function DECRYPT_3KEY_MODE(iValue in raw,iMode in pls_integer)return varchar2;   
  6. function ENCRYPT_3KEY_MODE(iValue in varchar2,iMode in pls_integer)return raw;   
  7. function FormatStr(iValue in varchar2)return varchar2;   
  8. function FormatStr2(iValue in varchar2)return varchar2;   
  9. end;  
  
  1. create or replace package body PG_ENCRYPT_DECRYPT   
  2. is  
  3. function GEN_RAW_KEY ( iKey in varchar2)   
  4. return raw   
  5. as  
  6. rawkey raw(240) := "";   
  7. begin  
  8. for i in 1..length(iKey) loop   
  9. rawkey := rawkey || hextoraw(to_char(ascii(substr(iKey, i, 1))));   
  10. end loop;   
  11. return rawkey;   
  12. end GEN_RAW_KEY;   
  13. /* Creating function DECRYPT_3KEY_MODE*/   
  14. FUNCTION DECRYPT_3KEY_MODE ( iValue in raw, iMode in pls_integer)return varchar2   
  15. as  
  16. vDecrypted varchar2(4000);   
  17. rawkey raw(240) := "";   
  18. begin  
  19. rawkey := GEN_RAW_KEY(iKey);-- decrypt input string   
  20. vDecrypted := dbms_obfuscation_toolkit.des3decrypt (UTL_RAW.CAST_TO_VARCHAR2(iValue), key_string => rawkey, which => iMode);   
  21. return FormatStr2(vDecrypted);   
  22. end DECRYPT_3KEY_MODE;   
  23. /*Creating function ENCRYPT_3KEY_MODE*/   
  24. FUNCTION ENCRYPT_3KEY_MODE ( iValue in varchar2, iMode in pls_integer)return raw   
  25. as  
  26. vEncrypted varchar2(4000);   
  27. vEncryptedRaw Raw(2048);   
  28. rawkey raw(240) := "";   
  29. begin  
  30. rawkey := GEN_RAW_KEY(iKey);-- encrypt input string   
  31. vEncrypted := dbms_obfuscation_toolkit.des3encrypt (FormatStr(iValue), key_string => rawkey, which => iMode);   
  32. -- convert to raw as out   
  33. vEncryptedRaw := UTL_RAW.CAST_TO_RAW(vEncrypted);   
  34. return vEncryptedRaw;   
  35. end ENCRYPT_3KEY_MODE;   
  36.   
  37. function FormatStr(iValue in varchar2)return varchar2   
  38. as  
  39. begin  
  40. declare  
  41. i number;   
  42. j number;   
  43. m_value varchar2(4000);   
  44. begin  
  45. m_value:=iValue;   
  46. i:=(length(m_value) mod 8);   
  47. if i<>0 then  
  48. j:=1;   
  49. for j in 1..(8-i) loop   
  50. m_value:=m_value || "#";   
  51. end loop;   
  52. end if;   
  53. return m_value;   
  54. end;   
  55. end FormatStr;   
  56.   
  57. function FormatStr2(iValue in varchar2)return varchar2   
  58. as  
  59. begin  
  60. declare  
  61. i number;   
  62. j number;   
  63. m_value varchar2(4000);   
  64. begin  
  65. m_value:=iValue;   
  66. i:=instr(iValue,"#",1,1);   
  67. if i>0 then  
  68. m_value:=substr(m_value,1,i-1);   
  69. end if;   
  70. return m_value;   
  71. end;   
  72. end FormatStr2;   
  73. end PG_ENCRYPT_DECRYPT;  
Oracle创建百万行数据表之效率分析Oracle 大表复制方案存储过程实现相关资讯      oracle数据库教程 
  • Oracle raw数据类型介绍  (01/29/2013 10:05:53)
  • 监听器注册与ORA-12514 错误分析  (11/13/2012 14:30:08)
  • Oracle SQL的cursor理解  (11/13/2012 14:16:17)
  • Oracle 如何强制刷新Buffer Cache  (01/29/2013 10:02:46)
  • dblink致Oracle库的SCN变成两库的  (11/13/2012 14:24:41)
  • Linux操作系统下完全删除Oracle数  (11/13/2012 08:25:52)
本文评论 查看全部评论 (0)
表情: 姓名: 字数