> 데이터 베이스 > MySQL 튜토리얼 > Oracle查询密码加密串方法

Oracle查询密码加密串方法

WBOY
풀어 주다: 2016-06-07 17:29:24
원래의
1387명이 탐색했습니다.

我的需求是检查在线库是否有弱密码存在,最后发现原来这样是有原因的。因为Oracle的密码是根据用户名和密码共同生成的密码。也就

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

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

 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;
/

linux

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿