找回MD5加密的密码及MD5加密数据库中数据

有时,在开发过程中,如果不小心更改掉了项目管理员帐号的密码而又忘了,存在数据库里的密码又是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;

(0)

相关推荐

  • Win7系统怎么给文件夹加密码?文件夹加密教程

    在我们工作中,为例保证自己的文件不被泄露,我们会新建一个文件夹然后进行加密,这个步骤其实很简单的,但是对于一些初学者确实有点困难,下面小编就为大家带来一篇Win7系统怎么给文件夹加密码的教程,需要的朋 ...

  • 如何在axure中打开密码框的加密功能

    电脑被很多人使用,用来玩游戏,刷剧等,有的用户在使用电脑时,为了保护自己密码的安全性,因此想要在axure中打开密码框的加密功能,但是却不知道如何打开,那么小编就来为大家介绍一下吧.具体如下:1. 第 ...

  • Excel2016怎么给表格文件加密 需要密码才能打开

    有时候我们制作的表格中包含了一些重要的数据, 为了防止数据外泄,保证数据安全,我们需要 给Excel表格文件设置密码,让其他人需要密码才能打开和查看文件,现在小编就和大家分享 Excel2016给表格 ...

  • 怎么给手机设置指纹密码跟应用加密

    前两天刚在网上买了款金立T1,店家搞促销买的,里面有个特色功能可以指纹密码解锁,开始感觉用不来,后来才发现是我给没设置好,现在给大家分享下怎么给收设置指纹密码和应用加密. 操作方法 01 打开手机,点 ...

  • excel表格加密的密码忘记了怎么办(表格设置密码保护忘记密码怎么办)

    对于一些比较重要的Excel文件,我们有时候需要设置工作表密码,限制别人对工作表内容进行修改删除等操作.但时间一长,有时候会把密码给忘了.或者别人发给你的Excel表格设置了工作表保护密码而不能编辑怎 ...

  • 对称加密之AES及压缩加密解密解压综合实战

    对称加密:就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。 因此加密的安全性不仅取决于加密算法本身,密钥管理的安全 ...

  • 如何找回忘记的WiFi密码

    想把家里的WiFi密码告诉来访客人,却记不起来?忘记了让电脑自动保存的密码,无法连接网络?别担心,你可以用几种方法找回WiFi密码,或是重新设置路由器.一起来看看要怎么做吧. Windows系统 01 ...

  • 如何给u盘加密,u盘文件夹加密的图文方法介绍

    给U盘加密其实很简单,下载一个叫U盘超级加密3000的U盘加密软件就可以了。 这款U盘加密的软件最大的特点是不用安装,只要一个exe文件。你把它放到你需要加密的U盘里,就可以加密U盘里的数据了。并且到 ...

  • word怎么加密保护?word文档加密方法介绍

    有时候,我们不想让别人看到文档里面的内容或者修改文档里面的内容,那么就可以对word文档进行加密处理,下面小编就为大家介绍word文档加密方法,一起来看看吧! 步骤 1.打开word文档,选择“文件” ...