MD5 哈希值不一样
MD5 hashes not the same
编辑:我发现了一些其他的哈希值,这种方法也适用
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,以便将其与值 1
进行比较
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)
然后我用第二个字符串尝试了同样的方法
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 与它的最后一个值进行比较
所以我不太确定这 3 个字符串是否不同
顺便说一句:我正在使用 adobe crypto:https://github.com/mikechambers/as3corelib/blob/master/src/com/adobe/crypto/MD5.as 获取 MD5 哈希值
感谢您的回答和最诚挚的问候
编辑:对于新问题:
将您尝试获取 MD5 的确切字符串转换为十六进制,您将看到它们的不同之处。保证,它们是不同的。
编辑:下面引用了原始问题。
第二个不匹配,因为您没有使用正确的数组变量。
myArray1 = string1.split('-');
value1 = String(myArray1.pop()); (6dcef1027f806329 - value I am comparing to)
对
myArray2 = string2.split('-');
value2 = String(myArray.pop()); (b91ee21d6cb22d7b - value I am comparing to)
后者应该是
value2 = String(myArray2.pop()); (b91ee21d6cb22d7b - 我比较的值)
"myArray"从哪里来的?
此外,请停止使用 MD5 - 它容易发生冲突,而且通常太小。请改用 SHA-2 或 SHA-3 系列的成员或 Whirlpool;所有这些都是 accepted by NESSIE.
如果您正在进行密码散列,请停止使用任何原始散列并转至 pbkdf2、bcrypt、scrypt 或 argon2。
对于任何感兴趣的人来说,问题是我没有使用正确的字符串来计算 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);
第二个字符串
编辑:我发现了一些其他的哈希值,这种方法也适用
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,以便将其与值 1
进行比较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)
然后我用第二个字符串尝试了同样的方法
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 与它的最后一个值进行比较 所以我不太确定这 3 个字符串是否不同
顺便说一句:我正在使用 adobe crypto:https://github.com/mikechambers/as3corelib/blob/master/src/com/adobe/crypto/MD5.as 获取 MD5 哈希值
感谢您的回答和最诚挚的问候
编辑:对于新问题: 将您尝试获取 MD5 的确切字符串转换为十六进制,您将看到它们的不同之处。保证,它们是不同的。
编辑:下面引用了原始问题。
第二个不匹配,因为您没有使用正确的数组变量。
myArray1 = string1.split('-'); value1 = String(myArray1.pop()); (6dcef1027f806329 - value I am comparing to)
对
myArray2 = string2.split('-'); value2 = String(myArray.pop()); (b91ee21d6cb22d7b - value I am comparing to)
后者应该是
value2 = String(myArray2.pop()); (b91ee21d6cb22d7b - 我比较的值)
"myArray"从哪里来的?
此外,请停止使用 MD5 - 它容易发生冲突,而且通常太小。请改用 SHA-2 或 SHA-3 系列的成员或 Whirlpool;所有这些都是 accepted by NESSIE.
如果您正在进行密码散列,请停止使用任何原始散列并转至 pbkdf2、bcrypt、scrypt 或 argon2。
对于任何感兴趣的人来说,问题是我没有使用正确的字符串来计算 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);
第二个字符串