1 前言
众所周知,MD5是目前应用最多的密码保护方法,该编码传说为不可逆加密编码<也就是说,永运无法倒算原码>。
使用MD5加密用户的操作密码,可以有效防止系统维护人员直接进入数据库时出现系统安全漏洞<直接使用SELECT语句查询,将用户密码字段只能看到乱码,或者"****">
本文针对密码字段加密,作一实例,希望能给大家系统建设过程带来帮助。
2 技术点
2.1 DBMS_OBFUSCATION_TOOLKIT.MD5
DBMS_OBFUSCATION_TOOLKIT.MD5是MD5编码的数据包函数,但偶在使用select DBMS_OBFUSCATION_TOOLKIT.MD5(input_string =>'abc') a from Dual时,却有错误提示,看来该函数只能直接在程序包中调用,不能直接应用于SELECT语句。
2.2 Utl_Raw.Cast_To_Raw
DBMS_OBFUSCATION_TOOLKIT.MD5返回的字串,是RAW类型,要正确显示,需要经过Utl_Raw.Cast_To_Raw转换<该知识点则之前论坛中NICK511贴子中获得>
3 实例演练
3.1 测试环境
使用Scott/Tiger@YourDBName
--3.2.1 创建数据表
Drop Table Test_User;
CREATE TABLE Test_User (
UserName VARCHAR2(30) NOT NULL,
Password VARCHAR2(2000) NOT NULL
)
/
--3.2.2 创建程序包
Create Or Replace Package Test_MD5 AS
Function FN_GetMD5(P_Str In VarChar2)
Return VarChar2;
Function FN_CheckUser
(P_UserName In VarChar2
,P_Password In VarChar2)
Return Number;
End;
/
CREATE OR REPLACE PACKAGE BODY Test_MD5 AS
FUNCTION FN_GetMD5 (P_Str IN VARCHAR2)
RETURN VARCHAR2 AS
BEGIN
RETURN DBMS_OBFUSCATION_TOOLKIT.MD5(
input_string => Upper(P_Str));
END;
Function FN_CheckUser
(P_UserName IN VARCHAR2
,P_Password IN VARCHAR2)
Return Number
Is
L_Password VarChar2(2000);
BEGIN
SELECT
Utl_Raw.Cast_To_Raw(Password)
INTO
L_Password
FROM
Test_User
WHERE
Upper(UserName) = UPPER(P_UserName);
If Utl_Raw.Cast_To_Raw(FN_GetMD5(P_Password))=L_Password Then
Return 1;
Else
Return 0;
End If;
EXCEPTION
WHEN NO_DATA_FOUND THEN
Return 0;
END;
End;
/
--3.3 测试
Delete Test_User;
Insert Into Test_User Values('A',Test_MD5.FN_GetMD5('aa'));
Insert Into Test_User Values('B',Test_MD5.FN_GetMD5('bb'));
Commit;
Select Test_MD5.FN_CheckUser('a','aa') From Dual;
Select Test_MD5.FN_CheckUser('a','bb') From Dual;
注:对MD5编码的比较,可以不需要经过Utl_Raw.Cast_To_Raw转换。此处使用Utl_Raw.Cast_To_Raw的目的,是为了调试方便,同时多提供一个知识点。
上面的测试俺没有实现
又有一例:
Oracle程序包有md5加密的方法DBMS_OBFUSCATION_TOOLKIT,使用方法dbms_obfuscation_toolkit.md5(input_string => pw,checksum_string => epw)
declare
v_out Varchar2(300);
v_str varchar2(30);
begin
v_str:='123456';
v_out:=rawtohex(utl_raw.cast_to_raw(dbms_obfuscation_toolkit.md5(input_string =>v_str)));
dbms_output.put_line(v_out);
end;
/
在oracle的test测试可实现md5的效果
修改案例:
declare
v_out Varchar2(300);
v_str varchar2(30);
v_get varchar2(100);
begin
v_str:='123456';
v_out:=rawtohex(utl_raw.cast_to_raw(dbms_obfuscation_toolkit.md5(input_string =>v_str)));
v_get:=utl_raw.cast_to_raw(dbms_obfuscation_toolkit.md5(input_string =>v_str));
insert into test_user(username,password)values(v_str,v_out);
dbms_output.put_line(v_get);
end;
如果想从批量修改数据并md5加密
Declare
md5key raw(100);
val raw(2000) ;
begin
for result in (select username,password from test_user )loop
md5key := utl_raw.cast_to_raw(dbms_obfuscation_toolkit.md5(input_string =>result.password));
dbms_output.put_line(md5key);
update test_user set password=md5key where username=result.username;
end loop;
end;
分享到:
相关推荐
3、兼容性与灵活性: 适用于各种 Oracle 数据库环境,无论是本地部署还是云数据库,均可无缝集成,满足不同场景需求。 4、详尽注释文档: 提供了完整的函数代码及详细的注释说明,便于用户快速理解与应用,同时降低...
Oracle 透明数据加密(TDE)是Oracle数据库提供的一种安全特性,用于保护敏感数据免受未经授权的访问。TDE能够对存储在特定列或整个表空间中的数据进行加密,确保即使数据文件被盗,数据仍保持安全。以下是关于TDE的...
Oracle数据加密是数据库安全的重要组成部分,它保护存储在Oracle数据库中的敏感信息,如个人身份信息、财务记录等,防止未经授权的访问。Oracle提供了多种加密技术,以满足不同级别的安全需求和法规遵从性要求。 ...
### Oracle存储过程实现加密 #### 一、引言 随着互联网技术的发展,信息安全问题日益凸显,特别是对于希望转型成为电子商务的企业来说,数据安全至关重要。在众多保护数据安全的方法中,加密技术扮演着不可或缺的...
数据加密是Oracle数据库安全策略的关键组成部分,尤其是对于存储敏感数据如个人身份信息、财务记录或医疗健康信息的企业而言,加密至关重要。 Oracle数据库提供了多种加密方法,包括透明数据加密(Transparent Data...
文章深入讨论了Oracle数据库中不同级别的加密技术,包括记录级、字段级和数据项级加密,每种加密技术有其特定的应用场景和保护强度。 记录级加密顾名思义,是针对数据库中的一条完整记录进行加密处理,适用于需要对...
【Oracle学习记录】 在深入探讨Oracle数据库之前,我们首先了解如何在Aix5.3操作系统上安装Oracle 10g。AIX(Advanced Interactive eXecutive)是IBM开发的一种Unix操作系统,通常用于大型服务器和工作站。Oracle ...
在提供的文件列表中,`fyunwrap_full_gb.exe` 和 `fyunwrap_full_utf8.exe` 是两个可能用于解密Oracle加密对象的工具。FyUnwrap是一个常用的第三方工具,它能帮助我们解密Oracle的加密包。`mfc71d.dll`, `msvcp71d....
Oracle Advanced Security选项还提供了透明数据加密,以保护数据在存储时的隐私。 备份与恢复是确保数据完整性的关键步骤。Oracle提供RMAN(恢复管理器)进行数据库备份和恢复操作,支持增量备份、完整备份和归档...
在Oracle GoldenGate系统中,密码加密是确保数据安全的重要环节之一。根据题目的描述,我们可以了解到关于GoldenGate密码加密的一些关键事实: - **密码可以被加密并粘贴到参数文件中**:这意味着用户可以通过加密...
Oracle 11g提供了一套完整的安全机制,包括用户权限管理、角色、审计和网络加密。通过GRANT和REVOKE语句控制用户对数据库对象的访问权限。AUDIT功能记录数据库活动,有助于安全审计。网络加密如SSL/TLS协议保障数据...
Oracle文本导入工具是一种实用程序,专门设计用于将TXT和CSV格式的数据文件批量导入到Oracle数据库中。这个工具是由开发者自己编写的,旨在简化数据导入过程,提高效率,并可能解决传统方法(如SQL*Loader或SQL命令...
在实际操作中,我们需要根据具体的网络环境和安全策略,调整Nacos的配置,例如设置访问权限、开启SSL加密通信等。同时,为了保证服务的高可用,还需要监控Nacos节点的健康状态,并进行定期的备份和恢复策略。 总的...
3. **增强的安全性**:Oracle Database 11g 在安全性方面也进行了加强,包括细粒度访问控制(FGAC)、数据加密以及身份验证机制等。 4. **高可用性**:通过引入实时应用群集(Real Application Clusters,RAC)和...
Oracle监听器是Oracle数据库系统的重要组成部分,它负责管理和控制数据库实例与客户端应用程序之间的网络通信。...同时,为了便于故障排查和日后的维护,保持良好的配置记录和文档习惯也非常重要。
审计功能可以记录数据库活动,确保合规性。网络加密和SSL协议保障数据传输安全。 五、数据库性能优化 Oracle的性能优化涉及查询优化、索引策略、内存调优、表分区等。通过分析SQL执行计划、使用性能视图(如V$视图...
Oracle JDBC驱动程序允许Java应用程序通过Java代码与Oracle数据库进行交互,执行SQL查询、更新数据库记录以及管理事务等操作。在11g Release 2版本中,11.2.0.4是一个重要的维护版本,包含了一些性能优化、bug修复...
7. **错误处理和诊断**:提供了详细的异常信息和日志记录,方便调试和问题排查。 8. **XML支持**:支持XML类型的字段操作,可以方便地处理包含XML数据的数据库列。 9. **安全性**:支持最新的安全特性,如加密连接...
《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的数据库管理(如安装与启动,用户权限、备份与恢复等),以及Oracle的应用...