【问题标题】:C# MD5 Hashing Is not the same with Java MD5 [duplicate]C# MD5 Hashing 与 Java MD5 不一样 [重复]
【发布时间】:2018-05-16 07:45:16
【问题描述】:

这是我的 java 代码。

byte[] bytes = { 0x35, 0x24, 0x76, 0x12 };
  MessageDigest m = MessageDigest.getInstance("MD5");
  byte[] digest = m.digest(bytes);

C#

 byte[] bytes = { 0x35, 0x24, 0x76, 0x12 };
 MD5 md5 = new MD5CryptoServiceProvider();
 byte[] result = md5.ComputeHash(bytes);

我注意到生成的字节不同,我是java新手,谁能解释一下..谢谢..

结果是

c#

[  58,  74, 139,   3, 244, 223, 176, 230, 227, 252, 130, 221,  54, 159, 112, 239]

java

[  58,  74,-117,   3, -12, -33, -80, -26, -29,  -4,-126, -35,  54, -97, 112, -17]

【问题讨论】:

标签: java c# hash


【解决方案1】:

您可以在不同的结果中看到所有正值都相同。只有负面的不同。 .net byte type 是无符号的,所以它的范围是从 0 到 255。在 Java 中,字节类型的范围是 -128 到 127。You can read it here

【讨论】:

  • 这是否意味着如果我使用 c# 中的字节作为密钥 java 将无法解密它?因为产品不同。我是不是遇到了这个系统的限制?
  • 看看这个问题:[stackoverflow.com/questions/17754262/….也许它取决于使用的加密算法,但我认为可以在 c# 中解密由 java 应用程序加密的东西。
猜你喜欢
  • 2018-03-03
  • 2012-06-17
  • 1970-01-01
  • 2013-08-20
  • 2014-05-19
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
  • 1970-01-01
相关资源
最近更新 更多