博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
md5加密解析
阅读量:5333 次
发布时间:2019-06-15

本文共 1608 字,大约阅读时间需要 5 分钟。

 

MD5加密解析

知识库连接:

在线加密解密工具:

package com.md5;    import java.security.MessageDigest;    public class Md5 {            /**      * MD5加密  生成32位MD5码 方式一      * 16位的就是去掉开头和结尾的8位,就是中间的16位      * @param inStr 要加密的字符串      * @return 返回      */      public final static String str2MD5(String inStr) {          char hexDigits[] = { // 用来将字节转换成 16 进制表示的字符          '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd',                  'e', 'f' };          try {              byte[] strTemp = inStr.getBytes();              MessageDigest mdTemp = MessageDigest.getInstance("MD5");              mdTemp.update(strTemp);              byte tmp[] = mdTemp.digest(); // MD5 的计算结果是一个 128 位的长整数,              // 用字节表示就是 16 个字节              char strs[] = new char[16 * 2]; // 每个字节用 16 进制表示的话,使用两个字符,              // 所以表示成 16 进制需要 32 个字符              int k = 0; // 表示转换结果中对应的字符位置              for (int i = 0; i < 16; i++) { // 从第一个字节开始,对 MD5 的每一个字节                  // 转换成 16 进制字符的转换                  byte byte0 = tmp[i]; // 取第 i 个字节                  strs[k++] = hexDigits[byte0 >>> 4 & 0xf]; // 取字节中高 4 位的数字转换,                  // >>> 为逻辑右移,将符号位一起右移                  strs[k++] = hexDigits[byte0 & 0xf]; // 取字节中低 4 位的数字转换              }              return new String(strs).toUpperCase(); // 换后的结果转换为字符串          } catch (Exception e) {              return null;          }      }  }

  这里byte0>>>4&0xf,很多小白不太清楚

0x:十六进制

0xf:十六进制f     //二进制就是1111

byte0总共8位,所以右移四位就是取前四位,换成19进制的字符。

值得提醒的一件事是,MD5算法可以解密,只是不同的初始加密数据,解密的时间范围很大。快的(如纯数字加密)几毫秒就可以完成,慢的(如存在特殊字符)需要几百年才能解密。

转载于:https://www.cnblogs.com/xunzhaorendaxia/p/6889501.html

你可能感兴趣的文章
windows 安装yaml支持和pytest支持等
查看>>
读书笔记:季羡林关于如何做研究学问的心得
查看>>
面向对象的优点
查看>>
套接口和I/O通信
查看>>
阿里巴巴面试之利用两个int值实现读写锁
查看>>
浅谈性能测试
查看>>
Winform 菜单和工具栏控件
查看>>
CDH版本大数据集群下搭建的Hue详细启动步骤(图文详解)
查看>>
巧用Win+R
查看>>
浅析原生js模仿addclass和removeclass
查看>>
Python中的greenlet包实现并发编程的入门教程
查看>>
java中遍历属性字段及值(常见方法)
查看>>
深入理解jQuery框架-框架结构
查看>>
YUI3自动加载树实现
查看>>
python知识思维导图
查看>>
当心JavaScript奇葩的逗号表达式
查看>>
App Store最新审核指南(2015年3月更新版)
查看>>
织梦MIP文章内容页图片适配百度MIP规范
查看>>
[Kali_BT]通过低版本SerialPort蓝牙渗透功能手机
查看>>
C语言学习总结(三) 复杂类型
查看>>