首页 > 编程 > C# > 正文

C#与Java的MD5简单验证(实例代码)

2019-10-29 21:21:00
字体:
来源:转载
供稿:网友

C#端

using System;using System.IO;using System.Security.Cryptography;namespace 计算文件的MD5值{  class MD5_Helper  {    /// <summary>    /// 文件MD5校验    /// </summary>    /// <param name="pathName">文件绝对路径</param>    /// <returns>MD5校验码</returns>    public string getMD5Hash(string pathName)    {      string strResult = "";      string strHashData = "";      byte[] arrbytHashValue;      FileStream oFileStream = null;      MD5CryptoServiceProvider oMD5Hasher =            new MD5CryptoServiceProvider();      try      {        oFileStream = new FileStream(pathName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);        arrbytHashValue = oMD5Hasher.ComputeHash(oFileStream);//计算指定Stream 对象的哈希值        oFileStream.Close();        //由以连字符分隔的十六进制对构成的String,其中每一对表示value 中对应的元素;例如“F-2C-4A”        strHashData = BitConverter.ToString(arrbytHashValue);        //替换-        strHashData = strHashData.Replace("-", "");        strResult = strHashData;      }      catch (System.Exception ex)      {      }      return strResult;    }    /// <summary>    /// 字节数组校验    /// </summary>    /// <param name="buffer">待字节数组</param>    /// <returns>MD5校验码</returns>    public string getMD5Hash(byte[] buffer)    {      string strResult = "";      string strHashData = "";      byte[] arrbytHashValue;      MD5CryptoServiceProvider oMD5Hasher =            new MD5CryptoServiceProvider();      try      {        arrbytHashValue = oMD5Hasher.ComputeHash(buffer);//计算指定Stream 对象的哈希值        //由以连字符分隔的十六进制对构成的String,其中每一对表示value 中对应的元素;例如“F-2C-4A”        strHashData = BitConverter.ToString(arrbytHashValue);        //替换-        strHashData = strHashData.Replace("-", "");        strResult = strHashData;      }      catch(System.Exception ex)      {      }      return strResult;    }  }}

Java端

package com;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class MD5Util {	/**	 * 默认的密码字符串组合,用来将字节转换成 16 进制表示的字符,apache校验下载的文件的正确性用的就是默认的这个组合	 */	protected static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6','7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };	protected static MessageDigest messagedigest = null;	static {		try {			messagedigest = MessageDigest.getInstance("MD5");		} catch (NoSuchAlgorithmException e) {			e.printStackTrace();		}	}	public static void main(String[] args) throws IOException {		byte[] buffer= "HelloWorld".getBytes();//字节数组校验		String md55 = getFileMD5String(buffer);		System.out.println("md55:" + md55);	}		public static String getFileMD5String(File file) throws IOException {		InputStream fis;		fis = new FileInputStream(file);		byte[] buffer = new byte[1024];		int numRead = 0;		while ((numRead = fis.read(buffer)) > 0) {			messagedigest.update(buffer, 0, numRead);		}		fis.close();		return bufferToHex(messagedigest.digest());	}		public static String getFileMD5String(byte[] buffer) throws IOException {			messagedigest.update(buffer, 0, buffer.length);		return bufferToHex(messagedigest.digest());	}	private static String bufferToHex(byte bytes[]) {		return bufferToHex(bytes, 0, bytes.length);	}	private static String bufferToHex(byte bytes[], int m, int n) {		StringBuffer stringbuffer = new StringBuffer(2 * n);		int k = m + n;		for (int l = m; l < k; l++) {			appendHexPair(bytes[l], stringbuffer);		}		return stringbuffer.toString();	}	private static void appendHexPair(byte bt, StringBuffer stringbuffer) {		char c0 = hexDigits[(bt & 0xf0) >> 4];// 取字节中高 4 位的数字转换		// 为逻辑右移,将符号位一起右移,此处未发现两种符号有何不同		char c1 = hexDigits[bt & 0xf];// 取字节中低 4 位的数字转换		stringbuffer.append(c0);		stringbuffer.append(c1);	}} 

以上就是小编为大家带来的C#与Java的MD5简单验证(实例代码)的全部内容了,希望对大家有所帮助,多多支持VEVB武林网~


注:相关教程知识阅读请移步到c#教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表