背景:在做爬虫的URL处理专题中需要对URL进行处理再存储。

要求: Java 中对数据进行MD5加密,并转换为16进制,以字符串的形式输出

(1)      在Java中,java的java.security.MessageDigest已经定义了MD5的计算,得到的结果是128位整数。

(2)      将此128位转换为十六进制以字符串的形式输出

下面直接来代码

import java.security.NoSuchAlgorithmException;

public class MD5 {

/**

* 将source进行md加密,结果是128位二进制数。

* 将结果进行采用十六进制转换输出字符串

* */

public static String getMD5(byte[] source){

String result=null;

char hexDigits[]={ '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};

try {

java.security.MessageDigest md=java.security.MessageDigest.getInstance("MD5");

md.update(source); //更新摘要

byte tmp[]=md.digest(); //进行md5计算

char str[] =new char[ 16*2 ]; //md的结果是128位的长整数,用16进制表示的话就是32位,即32个字符表示

int k = 0;

for( int i=0 ; i<16; i++){

byte byte0 =tmp[i];

str[k++] = hexDigits[ byte0 >>> 4 & 0xf];//低四位与1111做逻辑与运算 得到16进制数存入低位

str[k++] = hexDigits[ byte0 & 0xf]; //高四位与1111做逻辑与运算得到16进制存入高位

}

result = new String (str);

} catch (NoSuchAlgorithmException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return result;

}

}

java md5加密 16进制_MD5加密,并转换为16进制相关推荐

  1. java md5加盐与解密_md5加密,md5加盐加密和解密

    packagecom.java.test;importjava.security.MessageDigest;importjava.security.SecureRandom;importjava.u ...

  2. 进制转换之十进制转换为D进制——整数部分除基取余法

    将十进制x转换为D进制的y: [方法]:整数采用"除基取余法",小数采用"乘基取整法" [推导]:以三位D进制为例,假设y的各位是a1a2a3 y = a 1 ...

  3. 进制转换:十进制转换为任意进制、任意进制转换为十进制

    目录 十进制转换为任意进制 任意进制转换为十进制 十进制转换为任意进制 //将10进制数num转换为d进制数 void convert_base(int num, int d) {int k;stac ...

  4. 12小时制(AM PM)字符串转换为24时制

    今天遇到时间转换问题,将带AM,PM的时间字符串转换为24小时制时间.查阅资料后解决,代码如下: 所用到的语言是scala语言 import java.text.SimpleDateFormat im ...

  5. Java的不同进制输出,[DanoR][Java小码][进制转换::将double转换为不同进制后用String输出]...

    功能简述 进制转换 输入: 一个数(double),目标进制(int)和小数的保留位数(int) 输出: 相应进制的表示方式(String) 参数说明 double number; //将要被转换的数 ...

  6. 关于java实现十进制转换为任意进制

    这原本是Noip2000的一个题目 https://www.luogu.com.cn/problem/P1017 被我们的伟大的唯心主义编程大师拿来当成了作业题,我正好复习一下进制问题 首先十进制转换 ...

  7. 进制转换(m 进制 x 转换为 n 进制的数)

    摘要:以前写的进制转换一般不会考虑大数问题,举个例子就是如果16进制的FFFFFFFFF就是16^9是一个非常大的数,这个时候就需要用数组来存. 题目: 将M进制的数X转换为N进制的数输出. 输入 输 ...

  8. 加密解密基础问题:字节数组和(16进制)字符串的相互转换

    在加密时,一般加密算法和hash算法,它们操作的都是字节数组,对字节数组按照加密算法进行各种变换,运算,得到的结果也是字节数组.而我们一般是要求对字符串进行加密,所以就涉及到字符串String到 by ...

  9. java md5 源码_MD5加密 Java源代码

    public classMD5_Encoding {//RFC1321中定义的标准4*4矩阵的常量定义. static final int S11 = 7, S12 = 12, S13 = 17, S ...

最新文章

  1. iOS - 支持水平 / 垂直显示自动滚动的跑马灯控件 --- SKAutoScrollLabel 的使用和实现
  2. 4.5.2 OSPF协议与链路状态算法
  3. getchar()到底怎么用_脱霉剂到底该怎么用?
  4. 多线程的两种实现方式和区别?
  5. 八大排序算法交换排序算法
  6. Win32窗体应用程序如何添加资源文件?
  7. 概率论和数理统计 - 02 - 随机变量及其分布
  8. IT-标准化-系列-15.在VPC 2007中构建虚拟网络
  9. (4)Linux进程调度-组调度及带宽控制
  10. C++中STL-queue使用方法
  11. 记一次mysql_query(): xxx is not a valid MySQL-Link resource
  12. Nginx配置——禁止指定user_agent
  13. 2019.8.29C++工作错误记录——Socket编程中出现ws2def.h文件“应输入标识符”或“重定义”问题(VS2015)
  14. EPLAN史上最全部件库,官网下载,部件宏,EDZ格式
  15. (已解决)windows2020卸载office2013(安装程序包语言不受系统支持)
  16. 【Android】iOS开发中xconfig和script脚本的使用
  17. HTTPS/HTTP
  18. SQL DXP 6.6.x 高级版--最新版
  19. ASCII2ChineseSheet
  20. hyper-v虚拟机的基本使用

热门文章

  1. [ZT]哈佛寓言13则
  2. UITableView经典教程
  3. ubuntu 安装sougou输入法
  4. VSCode插件MySQL连接数据库
  5. tcpdump抓取TCP协议、GRE协议数据
  6. linux系统是如何获取网卡的通信数据的
  7. 多进程、多线程同步(通讯)的方法
  8. 都说PHP简单,那新手开始如何入门PHP?
  9. android qq 圆形头像,把图片转换成圆形(仿qq手机版的名片头像)
  10. Excel中复杂字符串如何按类型拆分?例如“花椒12.5KG“拆分成花椒、12.5和KG