MD5工具类(java实现版)

介绍

MD5(Message Digest Algorithm)加密算法是不对称的加密算法,因为其实不可逆的,实际上其不能算作加密算法,
因为其不可解密。其实现原理是基于Hash算法(简称散列函数)。

MD5算法具有以下特点

1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易(算法简单)
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
5、不可逆计算反推

java代码实现

Md5Utils

/*** * MD5加密工具(是基于hash算法实现,不可逆)* * @author xuyi3* @2016年7月13日 @下午3:10:54* @Md5Utils* @功能说明:<br>* @春风十里不如你* @备注*/
public class Md5Utils {/** 16进制的字符数组 */private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d","e", "f" };/*** * * @param source*            需要加密的原字符串* @param encoding*            指定编码类型* @param uppercase*            是否转为大写字符串* @return*/public static String MD5Encode(String source, String encoding, boolean uppercase) {String result = null;try {result = source;// 获得MD5摘要对象MessageDigest messageDigest = MessageDigest.getInstance("MD5");// 使用指定的字节数组更新摘要信息messageDigest.update(result.getBytes(encoding));// messageDigest.digest()获得16位长度result = byteArrayToHexString(messageDigest.digest());} catch (Exception e) {e.printStackTrace();}return uppercase ? result.toUpperCase() : result;}/*** 转换字节数组为16进制字符串* * @param bytes*            字节数组* @return*/private static String byteArrayToHexString(byte[] bytes) {StringBuilder stringBuilder = new StringBuilder();for (byte tem : bytes) {stringBuilder.append(byteToHexString(tem));}return stringBuilder.toString();}/*** 转换byte到16进制* * @param b*            要转换的byte* @return 16进制对应的字符*/private static String byteToHexString(byte b) {int n = b;if (n < 0) {n = 256 + n;}int d1 = n / 16;int d2 = n % 16;return hexDigits[d1] + hexDigits[d2];}}//备注:其实apache commones Codec包中有常用的一些加密算法实现

总结

MD5加密算法是一种比较简单和高效的不可逆加密算法,是基于散列函数实现的。在应用开发过程中有很多时候为了
防止明文传输都会对传输内容进行加密,比如微信支付时传输的数据就使用MD5加密之后的字符串来做校验,当然有
些支付方式(支付宝的移动支付)会采用RSA签名方式来做防数据窜改提交。

MD5工具类(java实现版)相关推荐

  1. 腾讯开放平台接口鉴权(计算签名)工具类 java版

    腾讯开放平台 接口鉴权(签名)工具类 java版 用到了Hutool工具类 package top.seasmall.platform.core.config.nettyws.util;import ...

  2. MD5加密工具类(实战版)

    MD5加密工具类(实战版) 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成 ...

  3. Java实现MD5工具类

    目录 一.简介 二.MD5的特性 三.MD5工具类 四.实践 结语 一.简介   MD5 消息摘要算法是一种广泛使用的哈希函数,具有 128 位哈希值.虽然 MD5 最初被设计为用作加密哈希函数,但已 ...

  4. java中的MD5工具类

    简介:MD5算法. MD5算法是典型的消息摘要算法,它是由MD4,MD3和MD2算法演变而来.. 无论是哪一种MD算法,其原理都是接受一个任意长度的消息并产生一个128位的消息摘要.. 如果把得到的消 ...

  5. md5 java 工具类_Java实现一个MD5工具类

    I. MD5工具类 利用JDK封装一个简易的MD5工具类,逻辑比较简单,直接贴下具体实现 public static String getMD5(String content) { String re ...

  6. MD5工具类(含16位、32位、加盐、无盐、大小写)

    什么是MD5 MD5(Message-Digest Algorithm 5),即消息摘要算法第五版,是一种被广泛使用的密码散列函数.散列算法的基础原理是:将数据(如一段文字)运算演变为另一段固定长度( ...

  7. MD5工具类 加盐加密 及编码

    titls: MD5工具类加密 date: 2018/11/12 10:03:42 categories: 开发module import java.security.MessageDigest; i ...

  8. MD5工具类,提供字符串MD5加密(校验)、文件MD5值获取(校验)功能

    import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.Byt ...

  9. SHA1签名工具类java

    SHA1签名工具类java package com.net.util;import java.security.MessageDigest; import java.util.Iterator; im ...

最新文章

  1. 25个iptables常用示例
  2. TestNG学习随笔
  3. 《高性能Linux服务器构建实战》封面照出炉
  4. 5. SQL Server数据库性能监控 - 当前请求
  5. 据悉,深圳某工程师沦为C语言笔试枪手
  6. session存储的替代方法redis
  7. 爱普生690k打印针测试软件_办公室打印机什么牌子好 办公室打印机怎么选购【详解】...
  8. 必要时进行保护性拷贝
  9. mysql 变量定义和赋值_MySQL变量解析
  10. 计算机图形学の三种经典画直线算法
  11. 神通数据库适配 hibernate
  12. 菲律宾php是啥,投资菲律宾马尼拉房产的本质是什么?
  13. 自制三层架构代码生成器软件
  14. PCB正片和负片的区别与使用
  15. lisp 左手钢筋_CAD左手键及使用方法
  16. 8月第4周基金排行榜 | TokenInsight
  17. 《微积分:一元函数微分学》——高阶导数
  18. Android Studio | 5种Log | android.util.Log
  19. 莆系如何投放快手广告?
  20. AB变频器常见故障的原因

热门文章

  1. 英文简历中关于项目经验的一些有用的例子
  2. 代理服务器对比HA,NGINX
  3. openbox在ubuntu下安装及配置
  4. JAVA知识库系统计算机毕业设计Mybatis+系统+数据库+调试部署
  5. 数据挖掘r语言和python知乎_Hellobi Live |R语言爬虫实战案例分享:网易云课堂、知乎live、今日头条、B站视频...
  6. pdf格式转换工具(PDF24 Creator 中文版) v6.3.2
  7. Cadence OrCAD原理图中绘制实心三角形
  8. 基于神经网络的图像人体轮廓提取(一些经验)
  9. java视频转换语音,视频转换成音频方法,avi格式视频怎么转换为MP3格式
  10. 代码空白区添加代码(手动)