oracle9i解密rewrap,oracle 9i 的加密解密用法之dbms_obfuscation_toolkit(一)

从前段时间著名的CSDN的600W用户密码泄漏事件,再到天涯社区的4000w万用户,使用户对网站的信誉失去了信心,我记的常用的最早的技术社区就是CSDN,应该那时还是XML 格式化后的页面,相信最近各网站都在做软件上的升级,明文密码决不可取,可以自己写也可以用数据库特性的加密用法不过后者有数据库版本升级灵活性限制。

测试一下9I的加密用法dbms_obfuscation_toolkit package

 
 

DES 加密解密

dbms_obfuscation_toolkit.desencrypt

dbms_obfuscation_toolkit.desdecrypt

SQL> l

1  create or replace function encrypt(p_in varchar2,p_key varchar2) return varchar2

2  is

3  begin

4  return utl_raw.cast_to_raw(dbms_obfuscation_toolkit.desencrypt(input_string=>p_in,key_string=>p_key));

5* end;

SQL> /

函数已创建。

SQL> select encrypt('123456','mark') from dual;

select encrypt('123456','mark') from dual

*

ERROR 位于第 1 行:

ORA-28232: obfuscation 工具箱的输入长度无效

ORA-06512: 在"SYS.DBMS_OBFUSCATION_TOOLKIT_FFI", line 0

ORA-06512: 在"SYS.DBMS_OBFUSCATION_TOOLKIT", line 126

ORA-06512: 在"SYS.ENCRYPT", line 4

[oracle@anbob ~]$ oerr ora 28232

28232, 0000, "invalid input length for obfuscation toolkit"

// *Cause:  Length of data submitted for encryption or decryption is not a

//          multiple of 8 bytes.

// *Action: Make sure that the length of the data to be encrypted or decrypted

//          is a multiple of 8 bytes.

SQL> select encrypt('12345678','mark') from dual;

select encrypt('12345678','mark') from dual

*

ERROR 位于第 1 行:

ORA-28234: 密钥长度太短

ORA-06512: 在"SYS.DBMS_OBFUSCATION_TOOLKIT_FFI", line 0

ORA-06512: 在"SYS.DBMS_OBFUSCATION_TOOLKIT", line 126

ORA-06512: 在"SYS.ENCRYPT", line 4

SQL> select encrypt('123456','mark1234') from dual;

select encrypt('123456','mark1234') from dual

*

ERROR 位于第 1 行:

ORA-28232: obfuscation 工具箱的输入长度无效

ORA-06512: 在"SYS.DBMS_OBFUSCATION_TOOLKIT_FFI", line 0

ORA-06512: 在"SYS.DBMS_OBFUSCATION_TOOLKIT", line 126

ORA-06512: 在"SYS.ENCRYPT", line 4

SQL> select encrypt('12345678','mark12340') from dual;

ENCRYPT('12345678','MARK12340')

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

3B11A43ED856AE79

SQL> select encrypt('123456781','mark123400') from dual;

select encrypt('123456781','mark123400') from dual

*

ERROR 位于第 1 行:

ORA-28232: obfuscation 工具箱的输入长度无效

ORA-06512: 在"SYS.DBMS_OBFUSCATION_TOOLKIT_FFI", line 0

ORA-06512: 在"SYS.DBMS_OBFUSCATION_TOOLKIT", line 126

ORA-06512: 在"SYS.ENCRYPT", line 4

SQL> select encrypt('1234567812345678','mark123400') from dual;

ENCRYPT('1234567812345678','MARK123400')

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

3B11A43ED856AE79BD5AC85D2541690A

修改后:

SQL> create or replace function encrypt(p_in varchar2,p_key varchar2) return varchar2

is

v_in varchar2(255);

v_rtn varchar2(1000);

begin

v_in := rpad(p_in,(trunc(length(p_in)/8)+1)*8,chr(0));

dbms_obfuscation_toolkit.desencrypt(input_string=>v_in,key_string=>p_key,encrypted_string=>v_rtn);

return v_rtn;

end;

/

函数已创建。

SQL> create or replace function decrypt(p_in varchar2,p_key varchar2) return varchar2

2  is

3  v_in varchar2(2000);

4  begin

5     dbms_obfuscation_toolkit.DESDECRYPT(input_string => p_in,key_string => p_key,

6    decrypted_string=> v_in);

7    v_in := rtrim(v_in,chr(0));

8    return v_in;

9  end;

10  /

函数已创建。

因篇幅原因,再分一篇

「喜欢文章,快来给作者赞赏墨值吧」 赞赏

【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

请登录后发表评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值