如何在c#中生成与php一样的md5 hash code,如何在C#和Java中生成相同的MD5 Hashcode?

本文探讨了在C#与Java中实现MD5哈希的不同方式,并提出疑问为何相同输入下两者的输出不一致。通过提供具体代码示例,寻求解决方案以确保跨平台的一致性。

我有一个在C#中生成MD5哈希的函数,如下所示:

MD5 md5 = new MD5CryptoServiceProvider();

byte[] result = md5.ComputeHash(data);

StringBuilder sb = new StringBuilder();

for (int i = 0; i < result.Length; i++)

{

sb.Append(result[i].ToString("X2"));

}

return sb.ToString();

在java中,我的函数如下所示:

MessageDigest m = MessageDigest.getInstance("MD5");

m.update(bytes,0,bytes.length);

String hashcode = new BigInteger(1,m.digest()).toString(16);

return hashcode;

当C#代码生成:“02945C9171FBFEF0296D22B0607D522D”时,java代码生成:“5a700e63fa29a8eae77ebe0443d59239”.

有没有办法为同一个bytearray生成相同的md5哈希?

一经请求:

这是java中的testcode:

File file = new File(System.getProperty("user.dir") + "/HashCodeTest.flv");

byte[] bytes = null;

try {

bytes = FileUtils.getBytesFromFile(file);

} catch (IOException e) {

fail();

}

try {

generatedHashCode = HashCode.generate(bytes);

} catch (NoSuchAlgorithmException e) {

fail();

}

这是我在C#中的代码

var blob = GetBlobByHttpPostedFile(httpPostedFile);

var hashCode = Md5Factory.ConvertByteArray(blob);

private static byte[] GetBlobByHttpPostedFile(HttpPostedFile httpPostedFile)

{

var contentLength = httpPostedFile.ContentLength;

var result = new byte[contentLength];

var inputStream = httpPostedFile.InputStream;

inputStream.Read(result, 0, contentLength);

return result;

}

干杯

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值