MD5工具类(java实现版)
来源:互联网 发布:mac连接打印机 编辑:程序博客网 时间:2024/06/09 21:43
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签名方式来做防数据窜改提交。
0 0
- MD5工具类(java实现版)
- MD5加密类。。工具类。。。java实现
- java实现MD5加密 MD5Util工具类
- java MD5工具类
- Java MD5工具类
- java Md5工具类
- java工具类MD5
- java MD5工具类
- java md5工具类
- JAVA MD5工具类
- java MD5工具类
- java MD5加密工具类
- java Md5加密工具类
- MD5加密Java工具类
- MD5加密Java工具类
- 【java工具类】MD5加密
- Java MD5 加密工具类
- java Md5加密工具类
- jQuery学习笔记之设置取值
- 微信支付系统开发
- Python爬虫(urllib2+bs4)+分析找出谁是水贴王(1)--数据收集
- 公开密钥机制 算法及公式 例子
- Delphi创建服务程序
- MD5工具类(java实现版)
- 函数形参中指针的指针
- C++部分知识点整理
- JavaScript笔记
- 判断素数
- AFNetworking使用总结
- 算法导论---DP之钢条切割问题
- IBatis 查询显示日期
- PL/SQL Developer 导出数据