当前位置:  数据库>oracle

Oracle查询密码加密串方法

    来源: 互联网  发布时间:2017-05-21

    本文导语: 方法也是参考网上牛人的结果改写的,原来作者的需求是验证用户名和明文密码是否匹配,当时觉得用处不是很大,因为我的需求是检查在线库是否有弱密码存在,最后发现原来这样是有原因的。因为Oracle的密码是根据用户名和...

方法也是参考网上牛人的结果改写的,原来作者的需求是验证用户名和明文密码是否匹配,当时觉得用处不是很大,因为我的需求是检查在线库是否有弱密码存在,最后发现原来这样是有原因的。因为Oracle的密码是根据用户名和密码共同生成的密码。也就是说,A用户使用APP作为密码和B用户使用APP作为密码,生成的密文是不一样的。

Oracle查询密码加密串方法[图片]

废话不多说,贴一下我改动的函数吧。修改的东西非常少,原来是从库里面进行验证,现在我只是想得到加密串:

 create or replace function testpwd(password in varchar2)
return varchar2
authid current_user
is
 --
 raw_key raw(128):= hextoraw('0123456789ABCDEF');
 --
 raw_ip raw(128);
 pwd_hash varchar2(16);
 --
 procedure unicode_str(userpwd in varchar2, unistr out raw)
 is
  enc_str varchar2(124):='';
  tot_len number;
  curr_char char(1);
  padd_len number;
  ch char(1);
  mod_len number;
  debugp varchar2(256);
 begin
  tot_len:=length(userpwd);
  for i in 1..tot_len loop
   curr_char:=substr(userpwd,i,1);
   enc_str:=enc_str||chr(0)||curr_char;
  end loop;
  mod_len:= mod((tot_len*2),8);
  if (mod_len = 0) then
   padd_len:= 0;
  else
   padd_len:=8 - mod_len;
  end if;
  for i in 1..padd_len loop
   enc_str:=enc_str||chr(0);
  end loop;
  unistr:=utl_raw.cast_to_raw(enc_str);
 end;
 --
 function crack (userpwd in raw) return varchar2
 is
  enc_raw raw(2048);
  --
  raw_key2 raw(128);
  pwd_hash raw(2048);
  --
  hexstr varchar2(2048);
  len number;
  password_hash varchar2(16); 
 begin
  dbms_obfuscation_toolkit.DESEncrypt(input => userpwd,
        key => raw_key, encrypted_data => enc_raw );
  hexstr:=rawtohex(enc_raw);
  len:=length(hexstr);
  raw_key2:=hextoraw(substr(hexstr,(len-16+1),16));
  dbms_obfuscation_toolkit.DESEncrypt(input => userpwd,
        key => raw_key2, encrypted_data => pwd_hash );
  hexstr:=hextoraw(pwd_hash);
  len:=length(hexstr);
  password_hash:=substr(hexstr,(len-16+1),16);
  return(password_hash);
 end;
begin
 unicode_str(upper(password),raw_ip);
 return crack(raw_ip);
end;
/


    
 
 

您可能感兴趣的文章:

  • Oracle定义DES加密解密及MD5加密函数示例
  • Oracle数据库替代加密算法
  • 采用Oracle的dbms_obfuscation_toolkit的加密和解密详解
  • Oracle 存储过程加密方法
  • oracle下加密存储过程的方法
  • oracle 存储过程加密的方法
  • Java、JavaScript、Oracle、MySQL中实现的MD5加密算法分享
  • Linux平台下Oracle 密码文件重建
  • ORACLE 中修改用户密码的方法
  • 安装Oracle 10g忘记sys密码
  • 登录oracle数据库时密码忘记的解决方法
  • Oracle 忘记密码的找回方法
  • Linux下修改Oracle用户密码
  • 修改Oracle默认用户密码有效期时间
  • Oracle密码文件的使用和维护第1/3页
  • oracle修改scott密码与解锁的方法详解
  • oracle 重置sys密码的方法介绍
  • Oracle 11G密码180天过期后的修改方法
  • 将oracle用户密码设置成只有数字的
  • Oracle用户密码含特殊字符时登陆失败问题
  • Oracle数据库密码文件的使用与维护
  • oracle忘记sys/system/scott用户密码的解决方法
  • oracle中不知道某数据库用户密码的情况下也能登陆
  • Oracle 密码丢失解决方法祥述
  • 怎样拒绝Oracle数据库的密码出现@符号
  • Oracle数据库密码出现@符号的解决
  • Oracle用户密码含有特殊字符导致无法登陆解决方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下安装oracle后使用命令行启动的方法 linux启动oracle
  • Linux下完全卸载ORACLE 10G的方法
  • 将Oracle 8i数据成功移植Oracle 10g的方法
  • Oracle Connect to Idle Instance解决方法
  • oracle增加表空间大小两种实现方法
  • linux下用ODBC链接Oracle怎么连啊?跪求具体方法!!!
  • Linux系统下查看oracle SID的方法
  • oracle 彻底删除方法
  • window中oracle环境变量设置方法分享
  • oracle的job不能运行问题的解决方法
  • Linux下Oracle 10G DBCA等汉字乱码解决方法
  • Oracle中serveroutput参数一次设置永久保存方法
  • Oracle指定IP访问数据库方法
  • Oracle SID存在解決方法
  • PB7 连接 Oracle 的设置方法
  • Oracle删除后不能重新安装的解决方法
  • oracle删除文件后数据库启动不了的处理方法
  • 跪求UNIX 下C用OCI连接ORACLE方法。高手进!!!
  • 彻底删除Oracle数据库的方法
  • oracle drop table(表)数据恢复方法
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,