java md5

需求是,上传文件到HDFS,然后生成同名的MD5文件,基本示例如下:

public static String getMD5(InputStream inputStream)
    {
	    byte[] buffer = new byte[1024];
        int len = 0;
        try
        {
            MessageDigest messageDigest = MessageDigest.getInstance("MD5");
             while ((len = inputStream.read(buffer)) != -1)
            {
                messageDigest.update(buffer, 0, len);
            }
            BigInteger bigInteger = new BigInteger(1, messageDigest.digest());
            String hashtext = bigInteger.toString(16);
            while(hashtext.length() < 32 ){
            	  hashtext = "0"+hashtext;
            	}
            return hashtext;
        }
        catch (Exception e)
        {
            return null;
        }
    }
    

尤其需要注意的是第一段代码中的补0,如果不补0,这就会跟使用md5sum命令生成的数据有差别,这样使用md5sum -c 进行检查的时候,是会报错的。

报数据的格式不正确,提示错误不是校验失败。

	try {
				//mkdir -p then upload file
				String resDir = new File(softwareEntity.getResUri()).getParentFile().getPath();
				//System.out.println(resDir);
				HdfsUtil.getInstance().mkdir(resDir);
				HdfsUtil.getInstance().createFile(softwareEntity.getResUri(), file.getBytes());
				//upload the md5 file to the same directory
 	        String md5=EncryptionUtil.getMD5(file.getInputStream());
 	        StringBuilder sbFileCont = new StringBuilder(md5);
 			if(md5!=null)
 			{
 				String twoSpaces = "  " ;
 				sbFileCont.append(twoSpaces);
 				sbFileCont.append(file.getOriginalFilename());
 				sbFileCont.append("\n");
 				HdfsUtil.getInstance().createFile(softwareEntity.getResUri()+".md5",sbFileCont.toString().getBytes());
 			}
 			else
 				throw new ServiceException("Something wrong when gererate md5 digest for file" + softwareEntity.getResUri());

			} catch (IOException e) {
				throw new ServiceException("Save file error.", e);
			} catch (URISyntaxException e) {
				throw new ServiceException("upload file to hdfs error",e);
			}
时间: 2024-09-29 08:33:59

java md5的相关文章

2015-6-8 用javascript+ Java+md5解决http协议下,用户登录明文传输密码问题

不应该说是前段时间了,就最近吧,发现公司有一个系统用的还是Http协议,当时就想了,现在都用https协议,有证书的那安全大很多啊 ,还用http不会连加密都没有吧,找了一番,果然如此,别说是传输加密了,就连后台保存到数据库的密码都没有加密,本着闲的蛋疼的想法(主要是公司大部分是业务,感觉想跳啊),于是一个毁(无)天(聊)灭(之)地(极)的计划就这样诞生了,咳咳... 好了不废话,下面说下简单的思路: 用户登录页面,获取到用户密码,用MD5加密,然后进行传输,服务器端获取的是一个加密过的密码.然

javascript md5 二次加密 和 java md5 二次加密结果不同

最近研究httpclient post 时遇到了一个问题,很费解. js  md5(str) 和 java md5(str),第一次md5 加密结果一样,(当时忽略了大小写问题,java 大写,js小写). 但是 js      md5( md5(str) ), java   md5( md5(str) ) 也就是说第二次 md5 加密确又不一样了. 当时很无语,第一次一样,第二次为什么又 不一样了呢? 原来是大小写问题,md5 加密,都是网上找的代码,第一次md5加密,java返回结果是大写,

java MD5数据加密工具类

package com.wetuo.util; import java.security.MessageDigest; /**  * 数据加密工具类  * @author wzp  *  */ public class DataUtil { public static String md5(String str) { StringBuffer buffer = new StringBuffer(); char[] chars = { '0', '1', '2', '3', '4', '5', '

Java MD5算法

JAVA MD5算法  MD5即Message-Digest Algorithm 5(信息-摘要算法5),是一种用于产生数字签名的单项散列算法. MD5算法的作用是让大容量信息在用数字签名软件签私人密匙前被"压缩"成一种保密的格式,将一个任意长度的"字节串"通过一个不可逆的字符串变换算法变换成一个128bit的大整数. 即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数.

JAVA md5算法代码

public class MD5 { /** * 签名字符串 * @param text 需要签名的字符串 * @param key 密钥 * @param input_charset 编码格式 * @return 签名结果 */ public static String sign(String text, String key, String input_charset) { text = text + key; return DigestUtils.md5Hex(getContentByte

Java MD5(字符串)

import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Utils { /* * 传入一个字符串String msg,返回Java MD5加密后的16进制的字符串结果. * 结果形如:c0e84e870874dd37ed0d164c7986f03a */ public static String getMD5(String msg) { MessageDi

js和java MD5加密

项目中用到js MD5加密和后台java MD5加密,刚开始加密后两个不一致,网上找了好久终于找到一个啦,记下来: md5.js /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as defined in RFC 1321. * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. * Other co

java MD5加密工具类

1 import java.math.BigInteger; 2 import java.security.MessageDigest; 3 import java.security.NoSuchAlgorithmException; 4 5 public class MD5Utils { 6 /** 7 * 使用md5的算法进行加密 8 */ 9 public static String md5(String plainText) { 10 byte[] secretBytes = null;

java md5 数据加密

代码如下: import java.util.Scanner; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Solution { public static void main(String[] args) throws NoSuchAlgorithmException { /* Read and save the input String */ S

使用Java MD5 为文件和字符串加密

加密工具类 package com.kaige123.util; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.security.MessageDigest; /** * MD5文字和文件加密<br> * http