我对加密/哈希知之甚少。
我必须对加密密钥进行哈希处理。Java中的示例是这样的…
String encryptionKey = "test";
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(encryptionKey.getBytes("UTF-8"), 0, encryptionKey.length());
byte[] encryptionKeyBytes = messageDigest.digest();
现在,如果我错了,请纠正我,但是上面的代码使用MD5算法对字符串进行了哈希处理。
当我在C#中哈希相同的字符串时,我希望得到相同的结果。
我当前的C#代码看起来像这样…
string encryptionKey = "test";
var md5 = MD5.Create();
var keyBytes = Encoding.UTF8.GetBytes(encryptionKey);
byte[] encryptionKeyBytes = md5.ComputeHash(keyBytes);
但是末字节结果不匹配。
Java得到…
[0] 9
[1] -113
[2] 107
[3] -51
[4] 70
[5] 33
[6] -45
[7] 115
[8] -54
[9] -34
[10] 78
[11] -125
[12] 38
[13] 39
[14] -76
[15] -10
C#得到…
[0] 9 byte
[1] 143 byte
[2] 107 byte
[3] 205 byte
[4] 70 byte
[5] 33 byte
[6] 211 byte
[7] 115 byte
[8] 202 byte
[9] 222 byte
[10] 78 byte
[11] 131 byte
[12] 38 byte
[13] 39 byte
[14] 180 byte
[15] 246 byte
我需要C#代码才能获得与Java代码相同的结果(不是相反),有什么想法吗?
谢谢。
实际上,结果 是
相同的。像其他整数类型一样,字节值可以解释为有符号或无符号。例如,如果被解释为无符号,则10001111
对应于143
(您的第二个C#值)。但是,如果将其解释为带
符号
(使用二进制补码),则其值为-113
(您的第二个Java值)。
因此,差异似乎是由于您的值被格式化为Java中的签名格式,而未使用C#签名的格式。如果要在C#中获取带符号的字节,可以使用:
sbyte[] encryptionKeyBytesSigned =
encryptionKeyBytes.Select(b => (sbyte)b).ToArray();
但是,请注意,这不仅是仅在显示值时出现的格式问题。保存到文件后,两个结果应该相同。
问题内容: 我不知道如何实现从php到java的这几行。 好吧,我尝试将其转换,但是得到了不同的结果! java中的结果不同于php中的结果。 你能帮我吗??先感谢您 :) 问题答案: 您不能在不将其转换为字符串的情况下直接使用seq20吗?我会这样:
问题内容: 给定密钥,有什么办法可以解密加密的MD5字符串? 问题答案: 尝试使用Google(请参阅使用Google破解MD5密码)或包含md5()之类的MD5散列的在线数据库;或GDATA(最后一个包含1,133,766,035个唯一条目)。
好吧,这里都是我的问题。我正在尝试用MD5哈希加密字符串。下面是我试图哈希的字符串: 以下是预期输出: 下面是我在Android应用程序中得到的信息: 下面是我正在使用的代码: 在Android上运行这段代码时,我得到了上述意想不到的结果,但当我运行这段代码时,就像一个Java程序传递相同的字符串一样,我得到了预期的输出... 究竟是怎么回事?几天来,我一直被这件事难住,在网上搜寻线索。我已经尝试
主要内容:Hashtable 类中的属性,Hashtable 类中的方法在 C# 中,Hashtable(哈希表) 类表示根据键的哈希代码进行组织的键(key)/值(value)对的集合,可以使用键来访问集合中的元素。也就是说当您需要使用键来访问指定元素时,可以选择使用哈希表。 Hashtable 类中的属性 下表中列出了 Hashtable 类中一些常用的属性: 属性 描述 Count 获取哈希表中包含的键值对的个数 IsFixedSize 获取一个值,用来表示哈希
我想计算一个图像的哈希,首先我把图像转换成数据,然后在这个函数的帮助下,我会计算图像文件的哈希(数据),但是生成的哈希不匹配在线生成器和其他语言转换器,像(Java),甚至我尝试了其他库,但我得到相同的结果,我想当我转换成数据的时候,我的文件发生了一些事情,所以哈希不匹配其他转换器。 但当我计算一个纯文本散列时,它与所有在线转换器和其他语言转换器匹配,但与图像不一样? 谢谢你的帮助
哈希是键/值对 如果你想按名字查询,那么需要哈希。哈希的键必须唯一,但值可以是任意标量。 有时候你仍然会看到人们称它为“关联数组”,但不要想当然的把它作为数组。 通过键/值对列表来创建哈希 使用键/值对列表创建哈希: my %stooges = ( 'Moe', 'Howard', 'Larry', 'Fine', 'Curly', 'Howard', 'Iggy'