国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 產品 > 電腦 > 正文

找回MD5加密的密碼及MD5加密數據庫中數據

2020-04-09 19:39:55
字體:
來源:轉載
供稿:網友

  有時,在開發過程中,如果不小心更改掉了項目管理員帳號的密碼而又忘了,存在數據庫里的密碼又是MD5加密后的,這時候怎么辦?最為菜鳥的我,剛開始也很迷茫,不過向前輩們請教了請教,自己也查了查資料,特意整理記錄一下,并分享給大家。

  前提是你知道這個密碼存在在哪個表的哪個字段,只不過是加密了,如果是oracle數據庫的話,可以用DBMS_OBFUSCATION_TOOLKIT.MD5 ( input => utl_raw.cast_to_raw(預置密碼))來得到一個MD5加密后的密碼,

  所以我們可以在UPDATE user set password=DBMS_OBFUSCATION_TOOLKIT.MD5 ( input => utl_raw.cast_to_raw(預置密碼)) where name=sys來重新把不知道的密碼用預置密碼替換掉,這樣我們就可用忘記密碼的帳號重新登錄了,如果是MySQL的話,好像有個內置MD5()函數,也可以起到這樣的效果,具體的大家可以查查詳細MySQL中MD5的用法,如果是SQL Server的話,好像也有對應的MD5家嗎函數,記不太清了,應該是HashByte(加密方式, 待加密的值),也可以通過這種方式找回的。

  DBMS_OBFUSCATION_TOOLKIT.MD5是oracle提供的獲得md5值的函數,可以直接使用DBMS_OBFUSCATION_TOOLKIT.MD5 ( input => utl_raw.cast_to_raw(預置密碼))a FROM DUAL來得到加密后的數據,否則得到的是raw類型的數據,需要用utl_raw.cast_to_raw轉換成我們常用的md5格式,還有以上得到的md5值都是大寫,如果數據庫中存儲的是小寫,需要再用lower函數轉換一下。

  我們還可以使用存儲過程來實現MD5加密:

  declare

  v_string varchar2(50);

  v_n number;

  begin

  v_string := utl_raw.cast_to_raw(sys.dbms_obfuscation_toolkit.md5(input_string => 123456));

  v_n := length(v_string);

  dbms_output.put_line(v_string || -- || v_n);

  end;

  也可以寫成函數后調用實現MD5加密:

  create or replace function fun_get_md5(i_username in varchar2, i_password in varchar2)

  return varchar2 is

  begin

  return utl_raw.cast_to_raw(dbms_obfuscation_toolkit.md5(input_string => (i_username||i_password)));

  end fun_get_md5;

  sql> select fun_get_md5(zhangwz,123456) from dual;

  fun_get_md5(zhangwz,123456

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

  0d8df9100cd33ef80af0527858136e0b

  下邊是網上摘了一個存取用戶密碼信息的例子,以供大家參考:

  create table sys_user (id number,username varchar2(50),password varchar2(50));

  存取用戶密碼的過程應該寫到存儲過程中,以方便以后調用,這里是盡量省略來寫。

  用戶注冊時存入密碼:

  sql> insert into sys_user values (1001,zhangwz, fun_get_md5(zhangwz,123456)) ;

  sql> commit;

  用戶登錄時取出密碼:

  create or replace procedure p_login(i_uname varchar2

  ,i_passwd varchar2) is

  v_id number;

  v_error_text varchar2(200);

  begin

  select id

  into v_id

  from sys_user

  where username = i_uname

  and password = fun_get_md5(i_uname, i_passwd);

  exception

  when others then

  v_error_text := 用戶名或密碼不正確! || ,sqlcode: || sqlcode ||

   sqlerrm: || substr(sqlerrm ,1 ,200);

  end p_login;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武陟县| 张掖市| 辰溪县| 绍兴县| 渝中区| 比如县| 栾川县| 东乌| 巴彦县| 汉寿县| 汉中市| 容城县| 柳州市| 务川| 襄垣县| 正定县| 壶关县| 长岭县| 承德市| 会东县| 石城县| 定结县| 宁海县| 金塔县| 遂昌县| 沈丘县| 华池县| 澄迈县| 桃园县| 察哈| 开远市| 宜良县| 皮山县| 青铜峡市| 桂林市| 长岭县| 寻乌县| 深圳市| 永靖县| 甘谷县| 富民县|