找回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;

时间: 2024-11-11 03:08:41

找回MD5加密的密码及MD5加密数据库中数据的相关文章

asp.net中登录页面用户名和密码与数据库中数据进行比对出错,求大神指导!!!!

问题描述 asp.net中登录页面用户名和密码与数据库中数据进行比对出错,求大神指导!!!! dr['AID']=112100011TextBox1.Text=1121000177 dr['apassword']=245fghTextBox2.Text=123456 dr['AID']=1121000177TextBox1.Text=1121000177 dr['apassword']= 123456TextBox2.Text=123456 用户名或密码不正确,请重新输入! 这是运行时页面打印出

sql2000对现有的数据库密码进行MD5加密

问题描述 在sql server中对现有数据密码进行md5加密 用户数据库中密码是明码,现在想改用MD5加密方式,目前有很多数据库,而且数据库中的密码都在3000条以上,pwd字段都是nvarchar类型的. 请问:SQL SERVER2000中如何实现这样的功能? 问题补充:enet_java 写道 解决方案 引用enet_java 写道java的demo !!太不幸了,我现在也没有呢. 你觉得难点在什么地方呀?MD5加密的算法,我可以PM给你一个. 那谢谢了,我自己写asp吧解决方案二:ja

java中spring-shiro实现密码的MD5盐值加密

看了网上很多教程,都提到有配置spring shiro的密码加密方式,甚至给出了自定义的Class来实现.却很少有通过配置来解决的. 密码的盐值加密方式应该是非常通用的,也可以算是基础吧.按理说spring shiro不可能没有实现,让用户自己去实现吧. 通过读源码看各种关系,摸索出shiro的MD5盐值加密方式,分享一下 (shiro的maven仓库中的source从来都是个空文件,github上的源码又没有stable版本的代码,要调试很恼火),当然阅读源码可以直接到github上,http

md5 加密解密-密码为ccf4a125edb3e461f84fb84493731d42,请问这个密码怎么解密,这是什么加密方法

问题描述 密码为ccf4a125edb3e461f84fb84493731d42,请问这个密码怎么解密,这是什么加密方法 密码为ccf4a125edb3e461f84fb84493731d42,请问这个密码怎么解密,这是什么加密方法

AES加密解密&&SHA1、SHA加密&&MD5加密

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 AES加密解密 SHA1.SHA加密 MD5加密 二话不说马上附上代码: package com.luo.util; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.sec

asp.net中MD5 16位和32位加密函数_实用技巧

public string md5(string str,int code)   {    if(code==16) //16位MD5加密(取32位加密的9~25字符)    {     return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower().Substring(8,16) ;    }     else//32位加密    {     

利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密

本文介绍了openssl的几个实用命令,利用openssl进行BASE64编码解码.md5/sha1摘要.AES/DES3加密解密. 一. 利用openssl命令进行BASE64编码解码(base64 encode/decode)      1. BASE64编码命令       对字符串'abc'进行base64编码:           # echo abc | openssl base64           YWJjCg==  (编码结果)        如果对一个文件进行base64编

用户密码以BCrypt加密的方式来防范被破解

你会用什么样的算法来为你的用户保存密码?如果你还在用明码的话,那么一旦你的网站被hack了,那么你所有的用户口令都会被泄露了,这意味着,你的系统或是网站就此完蛋了.所以,我们需要通过一些不可逆的算法来保存用户的密码.比如:MD5, SHA1, SHA256, SHA512, SHA-3,等Hash算法.这些算法都是不可逆的.系统在验证用户的口令时,需要把Hash加密过后的口令与后面存放口令的数据库中的口令做比较,如果一致才算验证通过. 但你觉得这些算法好吗?我说的是:MD5, SHA1, SHA

JAVA 字符串加密、密码加密实现方法_java

在我们的程序设计中,我们经常要加密一些特殊的内容,今天总结了几个简单的加密方法,分享给大家! 如何用JAVA实现字符串简单加密解密?为保证用户信息安全,系统在保存用户信息的时候,务必要将其密码加密保存到数据库.  需要使用密码的时候,取出数据,解密处理即可.  避免保存明文密码. 方案一: package com.tnt.util; import java.security.MessageDigest; public class StringUtil { private final static