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)-加密程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)