zoukankan      html  css  js  c++  java
  • MD5加密

    MD5加密方法

    MD5是一个安全的散列算法,输入两个不同的明文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程不可逆;所以要解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD5算法散列之后,把得到的散列值和原始的数据形成一个一对一的映射表,通过比在表中比破解密码的MD5算法散列值,通过匹配从映射表中找出破解密码所对应的原始明文。

    对信息系统或者网站系统来说,MD5算法主要用在用户注册口令的加密,对于普通强度的口令加密,可以通过以下三种方式进行破解:

    (1)在线查询密码。一些在线的MD5值查询网站提供MD5密码值的查询,输入MD5密码值后,如果在数据库中存在,那么可以很快获取其密码值。

    (2)使用MD5破解工具。网络上有许多针对MD5破解的专用软件,通过设置字典来进行破解。

    (3)通过社会工程学来获取或者重新设置用户的口令。

    因此简单的MD5加密是没有办法达到绝对的安全的,因为普通的MD5加密有多种暴力破解方式,因此如果想要保证信息系统或者网站的安全,需要对MD5进行改造,增强其安全性,本文就是在MD5加密算法的基础上进行改进!

     1 private String formatMD5String(String param){
     2         try {
     3             MessageDigest digest = MessageDigest.getInstance("MD5");
     4             //加密
     5             byte[] miwen = digest.digest(param.getBytes());
     6             StringBuilder builder = new StringBuilder();
     7             for(byte b:miwen) {
     8                 String hex = Integer.toHexString(b & 0xFF);
     9                 
    10                 if (hex.length()==1){
    11                     hex = 0+hex;
    12                 }
    13                 builder.append(hex);
    14                 System.out.println(hex);
    15             }
    16             return builder.toString();
    17         } catch (NoSuchAlgorithmException e) {
    18             e.printStackTrace();
    19         }
    20         return String.valueOf(param.hashCode());
    21     }
    View Code

    此处仅提供一个使用方法,供参考!

    若担心密码过于简单,担心被列举出来,可以适当的加以变化后,再进行加密存储在数据库中,此处提供一种思路:

    String str = Integer.toHexString(param.hashCode())+param;
    String password = String.valueOf(str.hashCode());

    再将password当做参数进行加密就可以了。

  • 相关阅读:
    关于 ‘--exec’ 参数( find 命令)及介绍 ‘xargs ’命令区别(新版)
    关于 ‘--exec’ 参数( find 命令)及介绍 ‘xargs ’命令区别
    关于重装系统那点事
    CentOS 中文支持
    CentOS下 Yum 损坏与重建
    [转] Linux 中提高 VsFTP 服务器的安全性
    java之正则表达式的使用1
    [转载]java正则表达式
    myeclipse10修改全局jsp编码格式为gbk
    好的网站
  • 原文地址:https://www.cnblogs.com/lq147760524/p/6828993.html
Copyright © 2011-2022 走看看