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

    MD5 介绍

    大家都知道,地球上任何人都有自己独一无二的指纹,这常常成为公安机关鉴别罪犯身份最值得信赖的方法。与之类似,MD5 就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的“数字指纹”,如果任何人对文件名做了任何改动,其 MD5 值也就是对应的“数字指纹”就会发生变化。

    MD5 原理

    MD5 加密原理是散列算法,散列算法也称哈希算法。
    比如10除以3余数为一,4除以3余数也为一,但余数为一的就不知道这个数是哪个了。
    所以 MD5 不能解密。也是为什么扣扣密码只能重置,不能找回的原因。

    Java MD5 实现

    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    public class MD5Util {
        //待加密的密码
        public static String password = "zjb0425";
    	
        public static void main(String args[]) {
              //结果字符串
              String result = "";
              try {
                    MessageDigest md = MessageDigest.getInstance("MD5");
                    md.update(password.getBytes());
                    byte b[] = md.digest();
                    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));
                    }
                    result = buf.toString();
                    System.out.println("MD5(" + password + ",32小写) = " + result);
                    System.out.println("MD5(" + password + ",32大写) = " + result.toUpperCase());
              } catch (NoSuchAlgorithmException e) {
                    e.printStackTrace();
              }
        }
    }
    

    MD5 + Salt 加密

    我们知道,如果直接对密码进行散列,那么黑客可以对一个已知密码进行散列,然后通过对比散列值得到某用户的密码。换句话说,虽然黑客不能取得某特定用户的密码,但他可以知道使用特定密码的用户有哪些。密码加 Salt 可以一定程度上解决这一问题。所谓加 Salt,是由系统随机生成的,并且只有系统知道的字符串。这样,即便两个用户使用了同一个密码,由于系统为它们生成的 Salt 值不同,他们的散列值也是不同的。

  • 相关阅读:
    PyQt作品 – PingTester – 多点Ping测试工具
    关于和技术人员交流的一二三
    Pyjamas Python Javascript Compiler, Desktop Widget Set and RIA Web Framework
    Hybrid Qt applications with PySide and Django
    pyjamas build AJAX apps in Python (like Google did for Java)
    PyQt 维基百科,自由的百科全书
    InfoQ:请问为什么仍要选择Java来处理后端的工作?
    Eric+PyQt打造完美的Python集成开发环境
    python select module select method introduce
    GUI Programming with Python: QT Edition
  • 原文地址:https://www.cnblogs.com/feiqiangsheng/p/10885439.html
Copyright © 2011-2022 走看看