Objective c macOS Catalina 10.15中NSData的MD5向macOS 10.14返回不同的结果

Objective c macOS Catalina 10.15中NSData的MD5向macOS 10.14返回不同的结果,objective-c,macos,md5,macos-catalina,Objective C,Macos,Md5,Macos Catalina,在macOS 10.15中运行下面的MD5实现会返回与在10.14中不同的结果 NSData对象应该是相同的(不确定检查此项的最佳方法-在两种情况下分配给NSString的值都是(null)。我已经检查了长度,并且两者都相同) 有什么想法吗 编辑: NSData对象是使用以下(模糊化)代码创建的: 编辑: 它实际上看起来好像是NSData对象不同。相同的字符串被传递到上面的代码中,在测试应用程序中硬编码。 10.14和10.15之间仍然存在差异 十六进制输出: 10.15 62706C69 73

在macOS 10.15中运行下面的MD5实现会返回与在10.14中不同的结果

NSData对象应该是相同的(不确定检查此项的最佳方法-在两种情况下分配给NSString的值都是(null)。我已经检查了长度,并且两者都相同)

有什么想法吗

编辑: NSData对象是使用以下(模糊化)代码创建的:

编辑: 它实际上看起来好像是NSData对象不同。相同的字符串被传递到上面的代码中,在测试应用程序中硬编码。 10.14和10.15之间仍然存在差异

十六进制输出:

10.15
62706C69 73743030 D4010203 04050607 0A582476 65727369 6F6E5924 61726368 69766572 5424746F 7058246F 626A6563 74731200 0186A05F 100F4E53 4B657965 64417263 68697665 72D10809 54726F6F 748001A2 0B0C5524 6E756C6C 5F102C34 32373539 3930432D 42423235 36363143 2D434146 42424136 412D3031 46303242 42302D38 45364444 46303508 111A2429 3237494C 5153565C 00000000 00000101 00000000 0000000D 00000000 00000000 00000000 0000008B 47642437 2A752877 2B587852 684A7537 73342D39 39234625 305B413F 437A7434 4A722871 32245672 30406D58 50337251 71374644 372B522A 2D28462F 683E5F4B

10.14
62706C69 73743030 D4010203 04050609 0A582476 65727369 6F6E5824 6F626A65 63747359 24617263 68697665 72542474 6F701200 0186A0A2 07085524 6E756C6C 5F102C34 32373539 3930432D 42423235 36363143 2D434146 42424136 412D3031 46303242 42302D38 45364444 4630355F 100F4E53 4B657965 64417263 68697665 72D10B0C 54726F6F 74800108 111A232D 32373A40 6F818489 00000000 00000101 00000000 0000000D 00000000 00000000 00000000 0000008B 47642437 2A752877 2B587852 684A7537 73342D39 39234625 305B413F 437A7434 4A722871 32245672 30406D58 50337251 71374644 372B522A 2D28462F 683E5F4B

他们可能在10.14和10.15之间更改了实现。10.14中的数据是否在10.15上正确无归档(反之亦然)?你是对的,
archivedDataWithRootObject
方法返回的结果不同。我不确定我能对@trojanfoe做些什么?因此我假设只要它真的起作用,就没有什么问题,只是它会弄乱你的散列。您需要散列基本数据,而不是归档数据,然后您可以控制更改等。不建议使用MD5。改用SHA256。他们可能在10.14和10.15之间更改了实现。10.14中的数据是否在10.15上正确无归档(反之亦然)?你是对的,
archivedDataWithRootObject
方法返回的结果不同。我不确定我能对@trojanfoe做些什么?因此我假设只要它真的起作用,就没有什么问题,只是它会弄乱你的散列。您需要散列基本数据,而不是归档数据,然后您可以控制更改等。不建议使用MD5。改用SHA256。
NSData *firstData = [self.firstString dataUsingEncoding:NSUTF8StringEncoding];

NSMutableData *archivedData = [[NSKeyedArchiver archivedDataWithRootObject:secondString requiringSecureCoding:NO error:nil] mutableCopy];

[archivedData appendData:firstData];

return [archivedData MD5];
10.15
62706C69 73743030 D4010203 04050607 0A582476 65727369 6F6E5924 61726368 69766572 5424746F 7058246F 626A6563 74731200 0186A05F 100F4E53 4B657965 64417263 68697665 72D10809 54726F6F 748001A2 0B0C5524 6E756C6C 5F102C34 32373539 3930432D 42423235 36363143 2D434146 42424136 412D3031 46303242 42302D38 45364444 46303508 111A2429 3237494C 5153565C 00000000 00000101 00000000 0000000D 00000000 00000000 00000000 0000008B 47642437 2A752877 2B587852 684A7537 73342D39 39234625 305B413F 437A7434 4A722871 32245672 30406D58 50337251 71374644 372B522A 2D28462F 683E5F4B

10.14
62706C69 73743030 D4010203 04050609 0A582476 65727369 6F6E5824 6F626A65 63747359 24617263 68697665 72542474 6F701200 0186A0A2 07085524 6E756C6C 5F102C34 32373539 3930432D 42423235 36363143 2D434146 42424136 412D3031 46303242 42302D38 45364444 4630355F 100F4E53 4B657965 64417263 68697665 72D10B0C 54726F6F 74800108 111A232D 32373A40 6F818489 00000000 00000101 00000000 0000000D 00000000 00000000 00000000 0000008B 47642437 2A752877 2B587852 684A7537 73342D39 39234625 305B413F 437A7434 4A722871 32245672 30406D58 50337251 71374644 372B522A 2D28462F 683E5F4B