视窗
loading...
您现在的位置:首页 > IT认证 > oracle认证 >

Oracle性能调优:Oracle查询密码加密串方法


Oracle查询密码加密串方法

     

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

     

    

     

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

  [sql]

  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;

  /

  用法:

  SQL> select TESTPWD('AAPP')   from dual;

  TESTPWD('AAPP')

  --------------------------------------------------------------------------------

  EA3CE5815EDA5617

  SQL> select TESTPWD('BAPP')   from dual;

  TESTPWD('BAPP')

  --------------------------------------------------------------------------------

  86A292000F76737A

  这里可以看到生成的密码串和上面查询出来的是一致的,所以AAPP代表的就是A用户,密码是APP,BAPP代表的就是B用户,密码是APP。

  我这样改写的目的是准备测试弱密码口令,需要进行大量数据的对比和测试,因此不希望使用线上数据库进行破解,所以可以将线上的数据拷贝出来,然后在线下进行对比处理

  [sql] -- -----------------------------------------------------------------------------

  --                 LIMITED

  -- -----------------------------------------------------------------------------

  -- Script Name : testpwd.sql

  -- Author      : Pete Finnigan

  -- Date        : May 2009

  -- -----------------------------------------------------------------------------

  -- Description : This script can be used to test users passwords in databases

  --               of versions 7 - 10gR2

  -- -----------------------------------------------------------------------------

  -- Maintainer  : Pete Finnigan

  -- Copyright   : Copyright (C) 2008, 2009, Limited. All rights

  --               reserved. All registered trademarks are the property of their

  --               respective owners and are hereby acknowledged.

  -- -----------------------------------------------------------------------------

  -- License     : This software is free software BUT it is not in the public

  --               domain. This means that you can use it for personal or

  --               commercial work but you cannot remove this notice or copyright

  --               notices or the banner output by the program or edit them in any

  --               way at all. You also cannot host/distribute/copy or in anyway

  --               make this script available through any means either in original

  --               form or any derivitive work based on it. The script is

  --               only available from its own webpage

  --               ./testpwd.sql or any other page that

  --               Limited hosts it from.

  --               This script cannot be incorporated into any other free or

  --               commercial tools without permission from

闂侀潧妫岄崑锟�

闂侀潧妫岄崑锟�

闂侀潧妫欓崝鏇㈠储閵堝洦瀚婚柨婵嗘嫅缁憋綁鏌¢崟顐︻€楅柟铚傚嵆閹囧醇閻斿摜绉柣鐘叉搐閻°劌危閹达箑违闁跨噦鎷�
闂佸搫鐗滈崜娑㈡偟椤栫偞鐒鹃柕濞垮劚閻庤菐閸ワ絽澧插ù鐓庢嚇瀵爼濡烽敂鍓у煃婵炲瓨绮岀花鑲╄姳娴煎瓨鍤傞柡鍐ㄥ€荤粔褰掓煥濞戣櫕瀚�闁诲海鏁搁、濠偯归崱妯诲闁伙絽鏈悾鍗炃庨崶锝呭⒉濞寸厧鎳橀獮瀣箣濠婂嫮鎷ㄩ梺鍛婃⒐缁嬫帡鎯囨导鏉戝唨闁搞儯鍔嶉~鏍庨崶锝呭⒉濞寸厧鎳橀幆鍐礋椤愩垺鐦旀繝銏f硾鐎氬摜妲愰敓锟�闂佺懓鐡ㄩ崹鍐测堪閹寸姳鐒婂┑鐘叉搐濞呫垹霉閿濆棛鐭庨柍褜鍓欓幊鎰枔閹达附鍋嬮柛顐ゅ枑缂嶁偓闂佹垝鐒﹂妵鐐电礊閺冨牆绾ч柛鎰硶缁€锟�闁诲簼绲婚~澶愬垂濠婂嫮顩锋い鎺戝暞缁侇噣寮堕悙鍨珪婵炲牊鍨剁粚閬嶅焺閸愌呯婵犵鈧啿鈧懓锕㈡担鍓插殨闁稿本绻嶉崬鎾煙鐎涙ḿ澧繝鈧担鍦懝闁割煈鍋呯紞鈧梺鐟扮摠閻楃偟鎹㈠顑芥灃闁哄洦鐭换鍡涙煙椤撗冪仴妞ゆ洦鍓熷畷锝嗙節閸愨晩妲梺鑹伴哺濮婂鏌堥幘顔肩闁瑰瓨绮嶇划锕傛煥濞戞ɑ婀版繝鈧幍顔惧崥婵炲棗娴风粣妤冪磼閺傛鍎忕€规挸妫濆畷姘舵偐缂佹ḿ褰戦梺鎸庡喕閹凤拷闁诲海鏁搁幊鎾舵暜椤愶箑绀嗘繛鎴灻弫鍫曟倵绾拋娼愰柛銊︾矋缁傛帡顢楁担绋啃梺瑙勬緲缁绘垿寮鐣岊浄婵せ鍋撻柍褜鍓欓崐鍝ョ礊鐎n喗鍎嶉柛鏇ㄥ帎瑜版帗鐓€妞ゆ帒锕︾粈锟�闂佽壈椴稿濠氭焾閹绢喖妫橀柣鐔稿绾偓闂佹寧绋掑畝鎼佸磻閺嶃劎顩烽柨鐕傛嫹:webmaster@jscj.com闂侀潧妫岄崑鎾绘煟椤厾绁烽柣锔跨矙閺佸秹鏁撻敓锟�4008816886

相关文章

无相关信息
更新时间2022-09-16 10:07:20【至顶部↑】
联系我们 | 邮件: webmaster@jscj.com | 客服热线电话:4008816886(QQ同号) |  濠电儑缍€椤曆勬叏閻愮鍋撻獮鍨仾婵犫偓閸パ屽殫妞ゆ棁顔婄换锟�

付款方式留言簿投诉中心网站纠错二维码手机版

电话:
付款方式   |   给我留言   |   我要纠错   |   联系我们