MD5哈希不一样

时间:2018-01-28 16:18:23

标签: actionscript-3 hash md5

编辑:我发现了一些其他哈希,这种方法也适用于

c1542f06532950d9-c50fd90a80c8017a-6dcef1027f806329
9fc13754516e58d9-c50fd90a80c8017a-77e823d4b2b89ab4
206692e64d4a33b6-c50fd90a80c8017a-e04a839a7546fab3
7ed6b64f4e0cbfa7-c50fd90a80c8017a-147436e4f7955553

并且显然不一样所以我能想到的唯一一点就是它可能是一个编码问题(不确定你是否可以在AS3中指定字符串编码或者它总是UTF8)

嗨我有2个字符串,我试图从

获取MD5哈希值
string1 = "c1542f06532950d9-c50fd90a80c8017a-6dcef1027f806329";

首先我将其转换为数组

myArray1 = string1.split('-');

然后我得到了我想要与之比较的MD5计算值

value1 = String(myArray1.pop()); (6dcef1027f806329 - value I am comparing to)

然后我计算MD5,所以我可以将它与value1

进行比较
MD52Compare = MD5.hash(string1.slice(0,-16 -1) + "fours4me").substr(0,16); (6dcef1027f806329 - I get the same value as value1 which is what I want)

然后我尝试使用seond string

string2 = "f7a45ced624d3a70-1df5b7cd427370f7-b91ee21d6cb22d7b";

再次将其转换为数组

myArray2 = string2.split('-');

我得到的价值是以相同的方式进行比较

value2 = String(myArray2.pop()); (b91ee21d6cb22d7b - value I am comparing to)

现在和以前一样,我计算MD5

MD52Compare2 = MD5.hash(string2.slice(0,-16 -1) + "fours4me").substr(0,16); (03358d45ac9ed391 - and here is the problem MD52Compare2 is != value2)

所以我不确定为什么第二个字符串不会产生相同的MD5值 我也试过这个字符串:

9c1687ea58e5e770-1df5b7cd427370f7-4b62a84526ea1f56

再次我无法将MD5与其最后一个值进行比较 所以我不确定这里发生了什么,theese 3字符串不同

BTW:我正在使用adobe crypto:https://github.com/mikechambers/as3corelib/blob/master/src/com/adobe/crypto/MD5.as来获取MD5哈希

感谢Anwsering和Best Regards

2 个答案:

答案 0 :(得分:0)

编辑:对于新问题: 将您尝试获取MD5的确切字符串转换为十六进制,并且您将看到它们的不同之处。保证,他们是不同的。

编辑:以下引用原始问题 第二个没有匹配,因为您没有使用正确的数组变量。

  

myArray1 = string1.split(' - ');   value1 = String(myArray1.pop()); (6dcef1027f806329 - 我正在比较的价值)

VS

  

myArray2 = string2.split(' - ');   value2 = String(myArray.pop()); (b91ee21d6cb22d7b - 我正在比较的价值)

后者应该是

value2 = String( myArray2 .pop()); (b91ee21d6cb22d7b - 我正在比较的价值)

" myArray"来自?

另外,请退出使用MD5 - 它容易受到冲突,而且通常太小。使用SHA-2或SHA-3系列的成员或Whirlpool;所有这些都是accepted by NESSIE

如果您正在进行密码哈希,请使用任何原始哈希退出并移至pbkdf2,bcrypt,scrypt或argon2。

答案 1 :(得分:0)

对于任何对此问题感兴趣的人,我没有使用正确的字符串来计算带有

的md5

string1 = "c1542f06532950d9-c50fd90a80c8017a-6dcef1027f806329";    
MD52Compare2 = MD5.hash(string1.slice(0,-16 -1) + "fours4me").substr(0,16);

应该是

string2 = "f7a45ced624d3a70-1df5b7cd427370f7-b91ee21d6cb22d7b";    
MD52Compare2 = MD5.hash(string2.slice(0,-16 -1) + "aXPB2").substr(0,16);

表示第二个字符串