oracle 字符串加密算法

1、方法一 MD5加密

Java代码   收藏代码
  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算法

Java代码   收藏代码
  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;  

 

 

Java代码   收藏代码
  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;  

猜你喜欢

转载自luyige007.iteye.com/blog/1280672