如何解密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==

MD5解密方法

我在存储数据库的时候,通过md5加密方法将字段进行加密,当我在读取该字段时如何正确的读取原来的值啊

------解决方案--------------------

没办法,MD5是不可逆的。

你需要使用可逆加密算法。

------解决方案--------------------

插入表中的时候md5加密

比如:

$sql= "insert into register(names,pswd,repswd) values( '$_POST[names] ',md5( '$_POST[pswd] '),md5( '$_POST[repswd] ')) ";

$qid=mysql_query($sql);

读取的时候

$pswd=empty($_POST[ 'pswd ']) ' ':md5($_POST[ 'pswd ']);

------解决方案--------------------

如果业务要求可还原,那么不要采用MD5,请使用可逆加密算法,如DES加密。

MD5为不可逆散列算法,可用于存储用户密码,存储后不需要永远不需要知道明文。密码比较时只需将用户输入的密码再次转成MD5码与存储的相比较即可得知用户输入密码是否正确。

linux/unix *** 作系统一般采用MD5进行用户密码加密。

------解决方案--------------------

MD5目前所谓的破解只是采用碰撞法找到了对等因子。

比如:string1的MD5码为MD1,而现在我们做到的只是又找到了一个string2,它的MD5码也是MD1。

结果就是:用户登陆某采用MD5加密的系统时,本来密码是12345,现在可能用abcde也能登陆。

想想可能还原吗?如果可以还原,那天大的信息也能用32位长的字符串表示了,这不成了超级压缩算法了吗,整个宇宙的信息都可以用32位长表示了。不可逆的!

加密程序数据库触发子scjmmm REM 对GHXXB制立数据库触发子(当INSERT OR UPDATE GHXXB时触发) drop trigger scjmmm; create or replace trigger scjmmm before insert or update of mm On ghxxb For each Row Begin :new mm:=ENCRYPT(:new mm :NEW GH TO_CHAR(SYSDATE SS )); End; / 密码的加密程序ENCRYPT Create or Replace Function ENCRYPT (Inpass In Varchar IN_GH In Varchar IN_SS In Varchar ) Return Varchar Is bcs varchar ( ); bcs number; cs number; jg number; m_gh VARCHAR ( ); m_mm VARCHAR ( ); Begin m_gh:=IN_GH; m_mm:=INPASS; cs:=TO_NUMBER(IN_SS); If cs<=1 then cs:=77 ;end if; bcs:=substr(to_char(ascii(substr(m_gh,1,1))),1,2); If bcs<'1' then bcs:='7' ;end if; m_gh:=substr(m_gh,2); Loop EXIT WHEN nvl(length(m_gh),0)=0 ; bcs:=bcs||substr(to_char(ascii(substr(m_gh,1,1))),-1,1); m_gh:=substr(m_gh,2); End loop; Loop EXIT WHEN nvl(length(m_mm),0)=0 ; bcs:=bcs||substr(to_char(ascii(substr(m_mm,1,1))),-1,1); m_mm:=substr(m_mm,2); End loop; bcs1:=to_number(bcs); jg:=csbcs1; Loop EXIT WHEN length(to_char(jg))>13; jg:=jgcs ; End loop; RETURN(IN_SS||substr(to_char(jg),1,14)); End; / grant execute on ENCRYPT to public; lishixinzhi/Article/program/Oracle/201311/11194

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

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

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

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

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

没有

下载oracle数据库软件并解压。点击setupexe,选择安装。

2关闭电脑的防火墙,再继续安装。这里选择默认安装路径。

3点击下一步,如果出现下面的情况,先删除安装目录下的所有的文件,再点击选择“是”,进入下一步。

4点击“安装”就进入安装程序阶段。

以上就是关于如何解密Oracle Warp加密过程全部的内容,包括:如何解密Oracle Warp加密过程、急求Oracle数据库中MD5解密方法!!!、ORACLE 应用经验(4)-加密程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存