`
zhangljerry
  • 浏览: 144455 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

oracle加密的记录

阅读更多
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;
分享到:
评论
2 楼 super8608 2008-10-23  
1 楼 super8608 2008-10-23  
  

相关推荐

    Oracle自定义加密解密函数:数据安全合规·数据脱敏·加密存储高效解决方案

    3、兼容性与灵活性: 适用于各种 Oracle 数据库环境,无论是本地部署还是云数据库,均可无缝集成,满足不同场景需求。 4、详尽注释文档: 提供了完整的函数代码及详细的注释说明,便于用户快速理解与应用,同时降低...

    【数据安全】Oracle 透明数据加密(TDE) 完整操作手册

    Oracle 透明数据加密(TDE)是Oracle数据库提供的一种安全特性,用于保护敏感数据免受未经授权的访问。TDE能够对存储在特定列或整个表空间中的数据进行加密,确保即使数据文件被盗,数据仍保持安全。以下是关于TDE的...

    Oracle数据加密

    Oracle数据加密是数据库安全的重要组成部分,它保护存储在Oracle数据库中的敏感信息,如个人身份信息、财务记录等,防止未经授权的访问。Oracle提供了多种加密技术,以满足不同级别的安全需求和法规遵从性要求。 ...

    Oracle 存储过程 实现加密

    ### Oracle存储过程实现加密 #### 一、引言 随着互联网技术的发展,信息安全问题日益凸显,特别是对于希望转型成为电子商务的企业来说,数据安全至关重要。在众多保护数据安全的方法中,加密技术扮演着不可或缺的...

    ORACLE数据库加密程序

    数据加密是Oracle数据库安全策略的关键组成部分,尤其是对于存储敏感数据如个人身份信息、财务记录或医疗健康信息的企业而言,加密至关重要。 Oracle数据库提供了多种加密方法,包括透明数据加密(Transparent Data...

    基于Oracle数据库加密设计探讨.pdf

    文章深入讨论了Oracle数据库中不同级别的加密技术,包括记录级、字段级和数据项级加密,每种加密技术有其特定的应用场景和保护强度。 记录级加密顾名思义,是针对数据库中的一条完整记录进行加密处理,适用于需要对...

    oracle学习记录.docx

    【Oracle学习记录】 在深入探讨Oracle数据库之前,我们首先了解如何在Aix5.3操作系统上安装Oracle 10g。AIX(Advanced Interactive eXecutive)是IBM开发的一种Unix操作系统,通常用于大型服务器和工作站。Oracle ...

    查看unwrap加密的oralce包,过程,函数

    在提供的文件列表中,`fyunwrap_full_gb.exe` 和 `fyunwrap_full_utf8.exe` 是两个可能用于解密Oracle加密对象的工具。FyUnwrap是一个常用的第三方工具,它能帮助我们解密Oracle的加密包。`mfc71d.dll`, `msvcp71d....

    oracle深入 chm oracle深入

    Oracle Advanced Security选项还提供了透明数据加密,以保护数据在存储时的隐私。 备份与恢复是确保数据完整性的关键步骤。Oracle提供RMAN(恢复管理器)进行数据库备份和恢复操作,支持增量备份、完整备份和归档...

    Oracle Goldengate考试题目

    在Oracle GoldenGate系统中,密码加密是确保数据安全的重要环节之一。根据题目的描述,我们可以了解到关于GoldenGate密码加密的一些关键事实: - **密码可以被加密并粘贴到参数文件中**:这意味着用户可以通过加密...

    Oracle 11g内部技术文档

    Oracle 11g提供了一套完整的安全机制,包括用户权限管理、角色、审计和网络加密。通过GRANT和REVOKE语句控制用户对数据库对象的访问权限。AUDIT功能记录数据库活动,有助于安全审计。网络加密如SSL/TLS协议保障数据...

    oracle 文本导入工具

    Oracle文本导入工具是一种实用程序,专门设计用于将TXT和CSV格式的数据文件批量导入到Oracle数据库中。这个工具是由开发者自己编写的,旨在简化数据导入过程,提高效率,并可能解决传统方法(如SQL*Loader或SQL命令...

    nacos2.2.3-oracle版本

    在实际操作中,我们需要根据具体的网络环境和安全策略,调整Nacos的配置,例如设置访问权限、开启SSL加密通信等。同时,为了保证服务的高可用,还需要监控Nacos节点的健康状态,并进行定期的备份和恢复策略。 总的...

    oracle 基础oracle 基础oracle 基础oracle

    3. **增强的安全性**:Oracle Database 11g 在安全性方面也进行了加强,包括细粒度访问控制(FGAC)、数据加密以及身份验证机制等。 4. **高可用性**:通过引入实时应用群集(Real Application Clusters,RAC)和...

    配置Oracle监听器

    Oracle监听器是Oracle数据库系统的重要组成部分,它负责管理和控制数据库实例与客户端应用程序之间的网络通信。...同时,为了便于故障排查和日后的维护,保持良好的配置记录和文档习惯也非常重要。

    Oracle数据库资料大全

    审计功能可以记录数据库活动,确保合规性。网络加密和SSL协议保障数据传输安全。 五、数据库性能优化 Oracle的性能优化涉及查询优化、索引策略、内存调优、表分区等。通过分析SQL执行计划、使用性能视图(如V$视图...

    Oracle JDBC驱动11.2.0.4

    Oracle JDBC驱动程序允许Java应用程序通过Java代码与Oracle数据库进行交互,执行SQL查询、更新数据库记录以及管理事务等操作。在11g Release 2版本中,11.2.0.4是一个重要的维护版本,包含了一些性能优化、bug修复...

    Oracle.ManagedDataAccess.zip

    7. **错误处理和诊断**:提供了详细的异常信息和日志记录,方便调试和问题排查。 8. **XML支持**:支持XML类型的字段操作,可以方便地处理包含XML数据的数据库列。 9. **安全性**:支持最新的安全特性,如加密连接...

    Oracle11g从入门到精通2

    《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的数据库管理(如安装与启动,用户权限、备份与恢复等),以及Oracle的应用...

Global site tag (gtag.js) - Google Analytics