Sind die Hash-Funktionen in Apples Common Crypto und OpenSSL anders? Ich versuche, SHA256 der gleichen Zeichenfolge mit den beiden folgenden Methoden zu generieren, und beide produzieren unterschiedliche Ergebnisse. Mache ich etwas anderes? Ich habe den Eindruck, dass der SHA256-Algorithmus ist plattformübergreifend und das gleiche Ergebnis in iOS, Android, Windows usw.SHA256 Hash-Algorithmus produziert verschiedene Ergebnisse in iOS mit Common Crypto und OpenSSL
Hinweis: Wenn ich das gleiche in Android versucht mit MessageDigest.getInstance ("SHA-256") Ich habe das gleiche Ergebnis wie das CommonCrypto Hash-Ergebnis, aber das OpenSSL-Ergebnis ist anders.
// Apple Common Crypto - SHA256
- (NSData *)sha256:(NSData *)data {
unsigned char hashResult[CC_SHA256_DIGEST_LENGTH];
if (CC_SHA256([data bytes], (unsigned int)[data length], hashResult)) {
NSData *sha256 = [NSData dataWithBytes:hashResult length:CC_SHA256_DIGEST_LENGTH];
return sha256;
}
}
// SRP OpenSSL - SHA256
- (NSData *)sha256_2:(NSData *)data {
unsigned char hashResult[SHA256_DIGEST_LENGTH];
unsigned char *bin = (unsigned char *) [data bytes];
NSInteger length = sizeof(bin);
[_srpAuth hashWrapper:SRP_SHA256 input:bin size:length output:hashResult];
NSData *sha256 = [NSData dataWithBytes:hashResult length:SHA256_DIGEST_LENGTH];
return sha256;
}
welchen Wert gehasht werden Sie für 'length' im Fall openSSL bekommen? – Paulw11
Wie die anderen Hash-Ergebnisse (32 Byte). iOS CC/Android/MacOS OpenSSL Cmd-Zeile Hash-Ergebnis: <2910ff11 5706d967 044d624a 3a63c0ae 7ae5c5bf b5442372 e47f717d 94b5c18c>. Während OpenSSL Hash-Ergebnis: <6a382a3e f2034daf 1fbbc457 23dfeb24 123b112b ca2a14c0 27c5b9d9 8db6e996> – Harish
Sind Sie sicher? 'sizeof (bin)' sollte 4 auf einem 32-Bit-Gerät und 8 auf einem 64-Bit-Gerät geben. Wahrscheinlich willst du 'length = data.length;' – Paulw11