当前位置: 移动技术网 > IT编程>开发语言>Java > java实现的MD5摘要算法完整实例

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

2019年07月22日  | 移动技术网IT编程  | 我要评论
本文实例讲述了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:关于加密解密感兴趣的朋友还可以参考本站在线工具:

密码安全性在线检测:

高强度密码生成器:

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

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

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

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

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网