Robię zadanie przesyłania plików. Chcę wygenerować skróty SHA256 i CRC32. Czy ktoś może mi pomóc, jak mam wygenerować te hash? Chcę sprawić, by działał na iOS.Jak wygenerować SHA256 i CRC32 w ios
Odpowiedz
SHA256 jest dostępny w CommonCrypto. CRC32 nie jest hash, to cykliczna kontrola nadmiarowa.
Przykład Kod:
#import <CommonCrypto/CommonDigest.h>
NSData *dataIn = [@"Now is the time for all good computers to come to the aid of their masters." dataUsingEncoding:NSASCIIStringEncoding];
NSMutableData *macOut = [NSMutableData dataWithLength:CC_SHA256_DIGEST_LENGTH];
CC_SHA256(dataIn.bytes, dataIn.length, macOut.mutableBytes);
NSLog(@"dataIn: %@", dataIn);
NSLog(@"macOut: %@", macOut);
NSLog Wydajność:
dataIn: < 4e6f7720 69732074 68652074 696d6520 666f7220 616c6c20 676f6f64 20636f6d 70757465 72732074 6f20636f 6d652074 6f207468 65206169 64206f66 20746865 6972206d 61737465 72732e>
macOut: < 53f89cf6 7ebfbe56 89f1f76a 3843dfd1 09d68c5b a938dcd2 9a12004e 108260cb>
ok.Ale chcę uzyskać wartość CRC32 jakichkolwiek danych.Czy istnieje jakikolwiek sposób, aby uzyskać go w ios? – NSCry
Chcę pracować dla ios.In ios nie znajduję
Tak, Apple się zmienia, ale testowałem to z SDK iOS 5.0. Co do crc32, jest dostępny w wielu bibliotekach, takich jak zlib. – zaph
nie istnieją aplikacje, które mogą generować Hash dla iOS
To powinno działać .... to dla Mac
Dobra próba bycia pomocnym Yagnesh, ale myślę, że oryginalny plakat pyta o programowe generowanie liczb SHA256 i CRC32 dla własnego programu, który ładuje. –
@MichaelDautermann tak, masz rację. czy masz jakieś sugestie? – NSCry
[możesz uzyskać pomocne wskazówki tutaj w powiązanym pytaniu/odpowiedzi] (http://stackoverflow.com/questions/1847281/commoncrypto-is-no-longer-part-of-thone-sdk-where-else -can-i-easily-get-a), @ARC. –
W obu przypadkach n wykorzystywać to sens:
https://gist.github.com/paul-delange/6808278
i przykład
NSString* crc32 = (__bridge NSString*)TGDFileHashCreateWithPath((__bridge CFStringRef)filepath, TGDFileHashDefaultChunkSizeForReadingData, TGDChecksumAlgorithmCRC32);
Cudownie. Dziękuję Ci. – Drakes
tej metody generowania crc32c używanego przez gcloud iOS z filePath. Jeśli chcesz standardowego crc32 po prostu odkomentuj drugą wartość dla CRC32_POLYNOMIAL.
Odczytuje plik podany w 512 KB fragmentach, więc może być używany na dużych plikach.
- (NSString*) crc32c:(NSString*)filepath{
/// using crc code from
// http://classroomm.com/objective-c/index.php?action=printpage;topic=2891.0
// by rgronlie
//this is the standard crc32 polynomial
//uint32_t CRC32_POLYNOMIAL = 0xEDB88320;
//this is the crc32c one
uint32_t CRC32_POLYNOMIAL = 0x82F63B78L;
uint32_t CRC32C_SEED = 0xFFFFFFFFL;
// create and populate a lookup table
uint32_t* pCRCTable = malloc(sizeof(uint32_t) * 256);
for (uint32_t i = 0; i <= 255; i++)
{
uint32_t crc32 = i;
for (uint32_t j = 8; j > 0; j--)
{
if ((crc32 & 1) == 1)
crc32 = (crc32 >> 1)^CRC32_POLYNOMIAL;
else
crc32 >>= 1;
}
pCRCTable[i] = crc32;
}
// get a handle to the file
NSFileHandle *filehandle = [NSFileHandle fileHandleForReadingAtPath:filepath];
if(filehandle == NULL){
NSLog(@"failed to create file handle");
return nil;
}
// a buffer to read into
NSData* databuffer;
uint32_t crc = CRC32C_SEED;
// read the file in chunks of 512KB
while(true){
databuffer = [filehandle readDataOfLength: 512 * 1024];
// if there is nothing left finish
if([databuffer length] == 0){
break;
}
// otherwise run each chunk through the lookup table
uint8_t *pBytes = (uint8_t *)[databuffer bytes];
uint32_t length = [databuffer length];
while (length--)
{
crc = (crc>>8)^pCRCTable[(crc & 0xFF)^*pBytes++];
}
}
// clean up
[filehandle closeFile];
free(pCRCTable);
// this is the result
uint32_t hash = crc^0xFFFFFFFFL;
// reverse it for endianness
uint32_t hash_reversed = CFSwapInt32HostToBig(hash);
// as raw bytes
NSData* hash_data = [NSData dataWithBytes: &hash_reversed length: sizeof(hash_reversed)];
// return base64 encoded
return [hash_data base64EncodedStringWithOptions:0];
}
- 1. Cofanie CRC32
- 2. Jaka jest różnica między crc32 i crc32b?
- 3. Jak zaktualizować Homebrew SHA256?
- 4. Implementacja Crc32 C - nie działa
- 5. HMAC SHA256 hex skrót ciągu w Erlang, jak?
- 6. Jak wygląda szesnastkowy łańcuch SHA256?
- 7. Jak korzystać z sha256 w php5.3.0
- 8. Deszyfruj z SHA256
- 9. W Angular2 skrót SHA256 wygenerowanego pliku nie pasuje do SHA256 z innych witryn.
- 10. NodeJS - SHA256 Szyfrowanie hasła
- 11. Undefined funkcja sha256()
- 12. Jak korzystać z funkcji SHA256 OpenSSL
- 13. Jak obliczyć SHA256 sumę kontrolną pliku Przejdź
- 14. SHA256 w Go i PHP daje różne wyniki
- 15. Jak wygenerować drzewo składni zdań angielskich na iOS?
- 16. Jak wdrożyć CRC32, korzystając z konkretnych instrukcji Intela?
- 17. Jak wygenerować JWT token z IdentityModel Extensions dla .NET 5
- 18. Jak wygenerować podpis w AWS z Java
- 19. SHA256 w Objective-C dla iPhone
- 20. Jaki jest format wyjściowy SHA256
- 21. Jak hash SHA w kakao/iOS
- 22. Jak wygenerować Diagramy i UML kodu Kotlin?
- 23. Jak wygenerować nawigację w Middleman?
- 24. Jak wygenerować inicjator w Ruby?
- 25. Jak wygenerować ten sam token w PHP? (Od .NET)
- 26. Wyjątek podczas wywoływania MessageDigest.getInstance ("SHA256")
- 27. jak wygenerować dokumentację api
- 28. Java vs Python HMAC-SHA256 Niezgodność
- 29. Jak wygenerować datę z zaledwie miesiąca i roku w Javie?
- 30. Jak zaktualizować i wygenerować DocBlock dla całego projektu w PhpStorm?
Czy próbowałeś go uruchomić? – Dani
@Dani tak, zrobiłem. – NSCry