MD5加密及密码验证

MD5加密是常用的加密算法。可以对任意字符串的进行加密。生成16位字符数组。

密码验证:将输入的密码进行MD5加密转换后的字符串与数据库的密码进行比对。相等则验证通过。

 1 package utils;
 2
 3 import java.security.MessageDigest;
 4 import java.security.NoSuchAlgorithmException;
 5
 6 public class MD5Utils{
 7     /**
 8      *  字符串的加密
 9      * @param str
10      * @return byte[]
11      * @throws NoSuchAlgorithmException
12      */
13     public static byte[] encryptionStr(String str) throws NoSuchAlgorithmException {
14         if(str!=null){
15             //加密后得到的字节数组
16             byte[] bytes = null;
17             // 获取MD5算法实例 得到一个md5的消息摘要
18             MessageDigest md = MessageDigest.getInstance("MD5");
19             //添加要进行计算摘要的信息
20             md.update(str.getBytes());
21             //得出摘要结果
22             bytes = md.digest();
23             return bytes;
24         }
25         return null;
26     }
27     //字符数组转成字符串
28     private static String toHex(byte[] bytes) {
29
30         final char[] HEX_DIGITS = "0123456789ABCDEF".toCharArray();
31         StringBuilder ret = new StringBuilder(bytes.length * 2);
32         for (int i=0; i<bytes.length; i++) {
33             ret.append(HEX_DIGITS[(bytes[i] >> 4) & 0x0f]);
34             ret.append(HEX_DIGITS[bytes[i] & 0x0f]);
35         }
36         return ret.toString();
37     }
38     //密码验证
39     /*
40     * 将加密后的字节数组转换成十六进制的字符窜,形成最终的密码。
41     * 当输入字符串经过MD5加密后,得到的字符串与密码一样,则认为密码验证通过。
42     * */
43     public  static  boolean verification(String inputPassword,String dbPassword) throws NoSuchAlgorithmException {
44          String passwordByMD5 = toHex(encryptionStr(inputPassword));
45             if(dbPassword.equals(passwordByMD5)){
46                 return true;
47             }
48             return false;
49     }
50     public static void main(String[] args) throws NoSuchAlgorithmException {
51         String a = "test1";
52         String b ="test2";
53         String c ="ABCDE";
54         String [] str={a,b,c};
55                  for (String s : str) {
56                         byte [] bytes=encryptionStr(s);
57                         System.out.println("数据:" + s+" 加密后为:"+bytes.toString());
58                  }
59         String dbPassword = toHex(encryptionStr("abcdef"));
60         System.out.println(dbPassword);
61         String inputPassword = "abcdef";
62         String inputPassword2 = "abcdeffff";
63         System.out.println(verification(inputPassword,dbPassword));
64         System.out.print(verification(inputPassword,inputPassword2));
65     }
66 }

gitHub源码:MD5加密及密码验证

原文地址:https://www.cnblogs.com/fabaogege/p/10111632.html

时间: 2024-10-08 03:48:17

MD5加密及密码验证的相关文章

密码、文件MD5加密,密码sha256、sha384、sha512Hex等加密

package encryption; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.util.Arrays; import org.apache.commons.code

MD5 加密的密码在数据库重置

如果不小心更改掉了项目管理员帐号的密码而又忘了,存在数据库里的密码又是MD5加密后的,这时候怎么办呢? 1. oracle数据库,可以用DBMS_OBFUSCATION_TOOLKIT.MD5 ( input => utl_raw.cast_to_raw('预置密码'))来得到一个MD5加密后的密码: SQL如下: -----这里得到的md5值是大写的,如果数据库中存储的是小写,需要再用lower函数转换一下. update web_org_oper o set o.c_passwd = low

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

有时,在开发过程中,如果不小心更改掉了项目管理员帐号的密码而又忘了,存在数据库里的密码又是MD5加密后的,这时候怎么办?最为菜鸟的我,刚开始也很迷茫,不过向前辈们请教了请教,自己也查了查资料,特意整理记录一下,并分享给大家. 前提是你知道这个密码存在在哪个表的哪个字段,只不过是加密了,如果是oracle数据库的话,可以用DBMS_OBFUSCATION_TOOLKIT.MD5 ( input => utl_raw.cast_to_raw('预置密码'))来得到一个MD5加密后的密码, 所以我们可

iOS MD5加密

1.MD5加密 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992) 2.MD5加密作用 一致性验证 MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止

破解md5加密的方法

我们知道md5加密是不可逆转的,但是要破解md5的加密也很简单. 网上也有很多在线的破解.既然是不可逆转的,那么网上的那些破解是怎么来的呢? 原因很简单,就是使用穷举法来进行破解. 如:我们计算出键盘上所有字符的组合的md5,将加密前后的字符串分别存入数据库中: 然后拿你的md5加密后的字符串进行查询得出加密前的字符串.这就是在线破解的奥秘. 但是这种破解方法也有局限性.如:我对单一一个字符串进行多次的md5加密,那么我们破解就要反复的进行穷举. 如果你不知道字符串被md5加密了多少次,那么就要

MD5加密--项目案例

在项目中最尝使用MD5这种非对称加密的就是用户信息登录了.下面我就以一个简单的登录案例来说明MD5的用法 首先来看几张图: 用户登录页:需要选择要登录的系统,同时输入用户的用户名和密码,验证码才能进入到后台的主页 数据库的管理员的用户名和密码  密码是已经加密好的字段 OK,那么接下里的程序逻辑已经很明确了: 就是在前台页面输入填写好用户名,密码等各种各样的信息,表单提交给后台,在业务逻辑层查一下redis缓存,或者是查一下数据库有没有就好了, 如果有,则跳转到主页,如果没有,则弹出提示框,提醒

Shiro自定义realm实现密码验证及登录、密码加密注册、修改密码的验证

一:先从登录开始,直接看代码 @RequestMapping(value="dologin",method = {RequestMethod.GET, RequestMethod.POST},produces="text/html;charset=UTF-8") @ResponseBody public ResultJson systemUserdologin(XXX xxx,HttpServletRequest request,HttpServletRespons

分享知识-快乐自己:注册用户密码加密、登录验证及权限验证

***********************以下内容仅作为参考使用:********************************* 1.用户注册时,将用户设置的密码加密后存入数据库中(显然密码不能简单地用md5加密一次或者干脆不加密,这些都是会暴露用户隐私的,甚至是触动用户的利益): 加密密码: //生成盐(部分,需要存入数据库中) String random=new SecureRandomNumberGenerator().nextBytes().toHex(); //将原始密码加盐(

[android] 手机卫士保存密码时进行md5加密

一般的手机没有root权限,进不去data/data目录,当手机刷机了后,拥有root权限,就可以进入data/data目录,查看我们保存的密码文件,因此我们需要对存入的密码进行MD5加密 获取MessageDigest信息摘要器对象,调用MessageDigest.getInstance(“md5”),参数:规则 调用MessageDigest对象的digest(bytes)方法,得到加密的byte[] 数组,参数:byte[] 数组,调用String对象的getBytes()方法获取到字节数