如何解密Oracle Warp加密过程

如何解密Oracle Warp加密过程,第1张

Oracle加密的原理就是先对源码进行lz压缩lzstr,然后对压缩数据进行SHA-1运算得到40位的加密串shstr,然后将加密串与压缩串拼接得到shstr+lzstr,然后对拼接后的字符串进行Oracle双字符转换(转换表)。最后将转换后的字符串进行base64编码,最终得到wrap的加密串。

The default file extension for input_file is sql The default nameof output_file is input_fileplb Therefore, these commands are equivalent:

wrapiname=/mydir/myfile

wrapiname=/mydir/myfilesql oname=/mydir/myfileplb

Thisexample specifies a different file extension for input_file and adifferent name for output_file:

wrapiname=/mydir/myfilesrc oname=/yourdir/yourfileout

wrap 的使用步骤如下:

(1)将我们要加密的sql 语句保存到一个sql文本里。

(2)用wrap 进行处理,指定输入的sql,即我们第一步的问题,然后指定输出的路径和文件名,默认扩展名是plb。

(3)执行我们第二部进过wrap 处理的sql,即plb文件,创建我们的对象

示例1:wrap funcation

--函数

CREATE OR REPLACE FUNCTION F_DAVE (

n int

) RETURN string

IS

BEGIN

IF n = 1 THEN

RETURN 'Dave is DBA!';

ELSIF n = 2 THEN

RETURN 'Dave come from AnQing!';

ELSE

RETURN 'Dave come from HuaiNing!';

END IF;

END;

/

SYS@dave2(db2)> select F_DAVE(4) fromdual;

F_DAVE(4)

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

Dave come from HuaiNing!

BTW: 今天群里有人问我的blog的例子里为啥有安庆,因为我是安庆怀宁人。

[oracle@db2 ~]$ pwd

/home/oracle

[oracle@db2 ~]$ cat davesql

CREATE OR REPLACE FUNCTION F_DAVE (

n int

) RETURNstring

IS

BEGIN

IF n = 1 THEN

RETURN 'Dave is DBA!';

ELSIF n = 2 THEN

RETURN 'Dave come from AnQing!';

ELSE

RETURN 'Dave come from HuaiNing!';

END IF;

END;

/

[oracle@db2 ~]$ wrap iname=davesql

PL/SQL Wrapper: Release 102010-Production on Thu Aug 18 22:59:14 2011

Copyright (c) 1993, 2004, Oracle All rights reserved

Processing davesql to daveplb

[oracle@db2 ~]$ ls

bifilebbd daveplb davesql Desktop logbbd

[oracle@db2 ~]$ cat daveplb

CREATE OR REPLACE FUNCTION F_DAVE wrapped

a000000

1

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

8

10d e7

S9NWrpt8q6tkKEMxCcfYJz2aLF4wgxDQLZ4VfC9AkE6OnV4ydypXGhveHcDg8UXy98WIg6xR

crtc/BRdQJjutbna/9+g0LlaSx87/znV+y926S1AeC0IRi/tjPJTyvJereDdk8mftMo8QMjV

fw0xXn0zVagAawwNVhSAiy/JPTMKkrBkC5ruMwQSTe6JQNq7Q2QtJV0hgQou0rYuet4/gJ5B

wAj75ph6EA==

/

SYS@dave2(db2)> @daveplb

--再次调用函数,正常使用:

SYS@dave2(db2)> select F_DAVE(4) fromdual;

F_DAVE(4)

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

Dave come from HuaiNing!

--查看函数源码,已经加过密了:

SYS@dave2(db2)> select text fromdba_source where name='F_DAVE';

TEXT

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

FUNCTION F_DAVE wrapped

a000000

1

abcd

abcd

abcd

abcd

abcd

abcd

abcd

abcd

TEXT

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

abcd

abcd

abcd

abcd

abcd

abcd

abcd

8

10d e7

S9NWrpt8q6tkKEMxCcfYJz2aLF4wgxDQLZ4VfC9AkE6OnV4ydypXGhveHcDg8UXy98WIg6xR

crtc/BRdQJjutbna/9+g0LlaSx87/znV+y926S1AeC0IRi/tjPJTyvJereDdk8mftMo8QMjV

TEXT

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

fw0xXn0zVagAawwNVhSAiy/JPTMKkrBkC5ruMwQSTe6JQNq7Q2QtJV0hgQou0rYuet4/gJ5B

wAj75ph6EA==

oracle自带的加密和解密方法如果是同一个DESDECRYPT,那么肯定会在参数里面说明区别和用法,我对此方法不了解也就是说对这个方法的参数使用不了解,但用法应该类似如下:

insert into mytable(FieldA,FieldB) values('AAAAAA',自带方法('BBBBB',其他参数))

---对插入B列的内容加密

select FieldA,自带方法(FieldB,其他参数) as FieldB from mytable

---对存放在B列的内容解密

加密的字符串一般是在 程序当中生产的比如现在流行的16位 md5加密码。一般都是在程序当中对用户输入的 真实密码。进行一个MD5加密,会生产一个加密码。然后按需要截取其中16位。在把这16位MD5加密码 字符串 存取在数据库当中。在用户登入的时候。用户会输入真的密码在进行加密截取。然后和数据库当中的进行比较。如果成功则true反之为fasle

以上就是关于如何解密Oracle Warp加密过程全部的内容,包括:如何解密Oracle Warp加密过程、有这样一个需求,在.net中需要将oracle数据库里的一张表加密,在取出来时直接解密,怎么实现、如何将密码加密后存入oracle数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10160770.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存