C#MD5哈希与Java/PHP MD5哈希不匹配
我的练习是将C#MD5哈希与Java/PHP MD5哈希不匹配,c#,java,.net,hash,md5,C#,Java,.net,Hash,Md5,我的练习是将管理后端从php移植到.net 后端与用java编写的应用程序通信 与md5哈希相比,在php和java中,md5哈希是相等的 我无法在java应用程序中更改md5哈希代码,因为这样会导致超过10000张客户卡无法使用 我的问题是,后端已被移植,现在新后端(.net)和java应用程序之间的通信已中断 我的.net md5哈希代码返回的哈希值与java代码不同 爪哇: 我的java代码为bb27aee4返回: 46d5acfcd281bca9f1df7c9e38d50576 而我的
管理后端
从php移植到.net
后端与用java编写的应用程序通信
与md5哈希相比,在php和java中,md5哈希是相等的
我无法在java应用程序中更改md5哈希代码,因为这样会导致超过10000张客户卡无法使用
我的问题是,后端已被移植,现在新后端(.net)和java应用程序之间的通信已中断
我的.net md5哈希代码返回的哈希值与java代码不同
爪哇:
我的java代码为bb27aee4
返回:
46d5acfcd281bca9f1df7c9e38d50576
而我的.net代码返回:
b767fe33172ec6cbea569810ee6cfc05
我不知道我要做什么
请提前提供帮助和感谢。您看到哈希结果不同的原因是字符串的编码不同。在.NET代码中,您显式地指定了
UTF8
,而没有保证您的Java代码也会这样做;它很可能使用ASCII,这会导致生成不同的哈希
如果在.NET和Java代码中显式指定相同的编码,那么最终也会得到相同的MD5哈希。从哈希中看到不同结果的原因是用于字符串的编码不同。在.NET代码中,您显式地指定了
UTF8
,而没有保证您的Java代码也会这样做;它很可能使用ASCII,这会导致生成不同的哈希
如果在.NET和Java代码中明确指定相同的编码,那么最终也会得到相同的MD5哈希。这不是MD5哈希生成器的问题。
bb27aee4的MD5哈希值
:46d5acfcd281bca9f1df7c9e38d50576
&
BB27AEE4的MD5哈希值
:b767fe3317ec6cbea569810ee6cfc05
因此,基本上在.NET中,您正在为BB27AEE4
而不是BB27AEE4
生成MD5哈希
因此,请检查代码中的错误
祝你好运这不是MD5哈希生成器的问题
bb27aee4的MD5哈希值
:46d5acfcd281bca9f1df7c9e38d50576
&
BB27AEE4的MD5哈希值
:b767fe3317ec6cbea569810ee6cfc05
因此,基本上在.NET中,您正在为BB27AEE4
而不是BB27AEE4
生成MD5哈希
因此,请检查代码中的错误
祝你好运首先,确保你在java(
input.getBytes(“UTF-8”)
)和C#(ascienceoding.UTF8.getBytes(wert)
中都使用UTF-8,这看起来可疑,不应该是Encoding.UTF8.getBytes()
来编译吗?)。首先,确保你在java(input.getBytes(“UTF-8”)和C#中都使用UTF-8(ascienceoding.UTF8.GetBytes(wert)
看起来可疑,是否应该编译Encoding.UTF8.GetBytes()
)。虽然通常这是一个有效点,但它并不能解释测试输入bb27aee4
的差异,这将导致几乎所有编码的字节序列相同(EBCDIC除外)。虽然通常这是一个有效点,但它并没有解释测试输入bb27aee4
的差异,这将导致几乎所有编码(EBCDIC除外)的字节序列相同。
46d5acfcd281bca9f1df7c9e38d50576
b767fe33172ec6cbea569810ee6cfc05