Java生成对应字符串的MD5密码模块

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:   (1)一般使用的数据库中都会保存用户名和密码,其中密码不使用明码保存。       有时候用MD5密码,很多语言都提供了将字符串生成为MD5密码的方法或函数。MD5的加密算法是公开的。       有时候也可以用自己的字符串加密算法,这种加密算法是只有自己知道的。

  (1)一般使用的数据库中都会保存用户名和密码,其中密码不使用明码保存。

      有时候用MD5密码,很多语言都提供了将字符串生成为MD5密码的方法或函数。MD5的加密算法是公开的。

      有时候也可以用自己的字符串加密算法,这种加密算法是只有自己知道的。

  (2)破解MD5的过程就是先算好大量或者所有可能的字符串的MD5数值,之后进行查询就可以破解。虽然有些网站规定了密码的位数在6~20位之间,但是要事先计算这么多是字符串并有效的组织存储、查询还是相当麻烦,相当慢的。

    因为MD5的位数是固定的,比如16,32,64,而字符串的组合与长度是无穷尽的,这就有冲突啦。但是如果知道了加密前字符串的长度是有固定范围的,比如6~20,这个还是可以破解的。

   但是,如果不知道加密前字符的长度那么这就是无穷尽啦。貌似现在还没有人能够破解吧。

       MD5密码破解网站 :http://www.cmd5.com/

  (3)下面给出了一个java生成给定字符串的MD5密码的模块程序。

import java.security.MessageDigest;
public class Md5Test {
     
     public void toMD5(String plainText) {
          try {
               //生成实现指定摘要算法的 MessageDigest 对象。
               MessageDigest md = MessageDigest.getInstance("MD5");    
               //使用指定的字节数组更新摘要。
               md.update(plainText.getBytes());
               //通过执行诸如填充之类的最终操作完成哈希计算。
               byte b[] = md.digest();
               //生成具体的md5密码到buf数组
               int i;
               StringBuffer buf = new StringBuffer("");
               for (int offset = 0; offset < b.length; offset++) {
                    i = b[offset];
                    if (i < 0)
                        i += 256;
                    if (i < 16)
                        buf.append("0");
                    buf.append(Integer.toHexString(i));
               }
               System.out.println("32位: " + buf.toString());// 32位的加密
               System.out.println("16位: " + buf.toString().substring(8, 24));// 16位的加密,其实就是32位加密后的截取
          } 
          catch (Exception e) {
              e.printStackTrace();
          }
     }
    
     public static void main(String agrs[]) {
             new Md5Test().toMD5("LXD");//加密LXD
     }
}

 

 

相关文章
|
11天前
|
存储 安全 Java
Java零基础-字符串详解
【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
89 60
|
27天前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
38 15
|
30天前
|
Java
JAVA易错点详解(数据类型转换、字符串与运算符)
JAVA易错点详解(数据类型转换、字符串与运算符)
44 4
|
1月前
|
Java Docker 容器
java版本学习网站又添加了一个libgdx模块
java版本学习网站之前添加了docker,想了想还是再把libgdx添加进去吧。
24 3
|
1月前
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
107 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
|
2月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
49 3
|
2月前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
16 2
|
2月前
|
存储 移动开发 Java
java核心之字符串与编码
java核心之字符串与编码
20 2
|
2月前
|
Java
Java实现:将带时区的时间字符串转换为LocalDateTime对象
通过上述方法,你可以将带时区的时间字符串准确地转换为 `LocalDateTime`对象,这对于处理不需要时区信息的日期和时间场景非常有用。
653 4
|
2月前
|
算法 Oracle Java
Java字符串拼接技术演进及阿里巴巴的贡献
本文主要讲述了Java字符串拼接技术的演进历程,以及阿里巴巴贡献的最新实现 PR 20273。
125 11