欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java实现的MD5摘要算法完整实例

程序员文章站 2024-03-09 11:21:53
本文实例讲述了java实现的md5摘要算法。分享给大家供大家参考,具体如下: package com.soufun.com; import java.io.un...

本文实例讲述了java实现的md5摘要算法。分享给大家供大家参考,具体如下:

package com.soufun.com;
import java.io.unsupportedencodingexception;
import java.security.messagedigest;
import java.security.nosuchalgorithmexception;
/**
 * @author whd
 */
public class md5test {
  // md5 单向加密
  public static void main(string[] args) throws nosuchalgorithmexception,
      unsupportedencodingexception {
    string str = "hellomd摘要算法开始";
    system.out.println("原始值" + str);
    system.out.println("加密后的" + md5test.aftermd5(str));
    string digest = md5test.aftermd5(str);
    system.out.println(digest.equals(md5test.aftermd5(str)));
  }
  public static string aftermd5(string str) throws nosuchalgorithmexception,
      unsupportedencodingexception {
    // 获取md5 加密对象,还可以获取sha加密对象
    messagedigest md5 = messagedigest.getinstance("md5");
    // 将输入的信息使用指定的编码方式获取字节
    byte[] bytes = str.getbytes("utf-8");
    // 使用md5 类来获取摘要,也就是加密后的字节
    md5.update(bytes);
    byte[] md5encode = md5.digest();
    stringbuffer buffer = new stringbuffer();
    for (int i = 0; i < md5encode.length; i++) {
      // 使用&0xff 不足24高位,因为只占了8低位
      int val = ((int) md5encode[i]) & 0xff;
      if (val < 16) {
        buffer.append("0");
      }
      // 以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
      buffer.append(integer.tohexstring(val));
    }
    return buffer.tostring();
  }
}

使用org.apache.commons.codec.digest.digestutilsorg.apache.commons.codec.digest.digestutils来实现md5加密

在maven中的配置:

<dependency>
  <groupid>commons-codec</groupid>
  <artifactid>commons-codec</artifactid>
  <version>1.4</version>
</dependency>

这里注意1.2版本和1.4版本的区别很大,因为1.4中扩展了很多方法.
具体代码如下:

public static string aftermd5(string str){
      try {
      string md5 = digestutils.md5hex(str.getbytes("utf-8"));
      return md5;
    } catch (unsupportedencodingexception e) {
      // todo auto-generated catch block
      e.printstacktrace();
    }
      return null;
}

ps:关于加密解密感兴趣的朋友还可以参考本站在线工具:

密码安全性在线检测:

高强度密码生成器:
http://tools.jb51.net/password/createstrongpassword

迅雷、快车、旋风url加密/解密工具:

在线散列/哈希算法加密工具:

在线md5/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160加密工具:

在线sha1/sha224/sha256/sha384/sha512加密工具:

希望本文所述对大家java程序设计有所帮助。