C#与Java的MD5简单验证(实例代码)
程序员文章站
2022-04-15 09:34:31
c#端
using system;
using system.io;
using system.security.cryptography;
names...
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简单验证(实例代码)的全部内容了,希望对大家有所帮助,多多支持~
上一篇: C#中Json的简单处理方法
下一篇: ASP基础知识Command对象讲解