这个主要看软件开发人员的加密方式
创新互联公司2013年至今,是专业互联网技术服务公司,拥有项目网站制作、成都网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元凉城做网站,已为上家服务,为凉城各地企业和个人服务,联系电话:028-86922220
一般流程是,
1.新建用户,或者修改密码时候,将用户输入的密码按照一定的加密方式加密后储存在数据库
2.在用户登录的时候,将用户所输入的密码再次进行加密后与数据库内的加密密码对比
这样做的好处是,防止密码在网络传输过程中被截取,比如黑客可以对网络传输的数据进行抓包分析,对于加密的密码在传输过程中不是以明文进行传输,如果被窃取到数据,不能得到有效破解,也是没有用的,这就增加了可靠性。
可以例用Oracle
自带的Wrap工具实现,此工具在$ORACLE_HOME/BIN目录下,具体如下
1、设置字符集环境变量
set
NLS_LANG=CHINESE_CHINA.ZHS16GBK
2、创建一个存储过程文件
在E:\下创建test.sql文件,内容如下:
create
or
replace
procedure
test1(i
in
number)
as
begin
dbms_output.put_line('
输入参数是'||to_char(i));
end;
3、加密
c:\
cd
%ORACLE_HOME%\BIN
c:\wrap
iname=e:\test1.sql
PL/SQL
Wrapper:
Release
8.1.7.0.0
-
Production
on
Tue
Nov
27
22:26:48
2001
Copyright
(c)
Oracle
Corporation
1993,
2000.All
Rights
Reserved.
Processing
test1.sql
to
test1.plb
4、运行test1.plb
sqlplus
/nolog
SQLconn
TEST/TEST@db01
SQL
@e:\a.plb
过程已创建。
5、运行存储过程
SQL
set
serveroutput
on
SQL
execute
test1(1);
输入参数是1
PL/SQL
过程已成功完成。
6、查看存储过程的代码
SQL
select
name,text
from
all_source
where
type='PROCEDURE'
and
name='TEST1';
结果:看不到其原码
1、DBMS_OBFUSCATION_TOOLKIT.MD5是MD5编码的数据包函数
CREATE OR REPLACE FUNCTION MD5(passwd IN VARCHAR2)
RETURN VARCHAR2
IS
retval varchar2(32);
BEGIN
retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING = passwd)) ;
RETURN retval;
END;
select md5('123456') from dual;
MD5('123456')
e10adc3949ba59abbe56e057f20f883e
2、DES加密
create or replace function
encrypt_des(p_text varchar2, p_key varchar2) return varchar2 is
v_text varchar2(4000);
v_enc varchar2(4000);
raw_input RAW(128) ;
key_input RAW(128) ;
decrypted_raw RAW(2048);
begin
v_text := rpad( p_text, (trunc(length(p_text)/8)+1)*8, chr(0));
raw_input := UTL_RAW.CAST_TO_RAW(v_text);
key_input := UTL_RAW.CAST_TO_RAW(p_key);
dbms_obfuscation_toolkit.DESEncrypt(input = raw_input,key = key_input,encrypted_data =decrypted_raw);
v_enc := rawtohex(decrypted_raw);
dbms_output.put_line(v_enc);
return v_enc;
end;
DES加密:
update tb_salarysign_staff s set s.staffpwd =encrypt_des(s.staffpwd, 'test#5124*!de');
3、DES解密函数
create or replace function decrypt_des(p_text varchar2,p_key varchar2) return varchar2 is
v_text varchar2(2000);
begin
dbms_obfuscation_toolkit.DESDECRYPT(input_string = UTL_RAW.CAST_TO_varchar2(p_text),key_string =p_key, decrypted_string= v_text);
v_text := rtrim(v_text,chr(0));
dbms_output.put_line(v_text);
return v_text;
end;
DES解密:select decrypt_des(s.staffpwd, 'test#5124*!de') from tb_salarysign_staff s;
最简单的,把sys收了,异用户查询授权。
要是涉及到代码移交,那就用函数实现view,然后用DBMS_DDL.WRAP加密