Objetivo C: SHA1 -- ampo con objective-c campo con hash campo con sha1 camp Relacionados El problema

Objective C: SHA1


30
vote

problema

Español

¿Cómo puedo hacer una cadena o un conjunto de números en el objetivo C?

Original en ingles

How do i sha1 a string or set of numbers in Objective c?

           
   
   

Lista de respuestas

64
 
vote
vote
La mejor respuesta
 

commoncryptopto (un marco de Apple) tiene funciones para calcular los hashes SHA-1, incluido un hash de un solo paso:

  8  

Para un conjunto de números, asumamos que usted significa una matriz de ints de longitud conocida. Para tales datos, es más fácil construir iterativamente el digestio en lugar de usar la función de un disparo:

  9  

Tenga en cuenta que esto no tiene en cuenta esto. El SHA-1 calculado con este código en un sistema PowerPC diferirá de uno calculado en un sistema I386 o ARM. La solución es simple: cambie los bytes de los enteros a una endanidad conocida antes de hacer el cálculo:

  0  
 

CommonCrypto (an Apple framework) has functions for calculating SHA-1 hashes, including a one-step hash:

#include <CommonCrypto/CommonDigest.h>  unsigned char digest[CC_SHA1_DIGEST_LENGTH]; NSData *stringBytes = [someString dataUsingEncoding: NSUTF8StringEncoding]; /* or some other encoding */ if (CC_SHA1([stringBytes bytes], [stringBytes length], digest)) {     /* SHA-1 hash has been calculated and stored in 'digest'. */     ... } 

For a set of numbers, let us assume you mean an array of ints of known length. For such data, it is easier to iteratively construct the digest rather than use the one-shot function:

unsigned char digest[CC_SHA1_DIGEST_LENGTH]; uint32_t *someIntegers = ...; size_t numIntegers = ...;  CC_SHA1_CTX ctx; CC_SHA1_Init(&ctx); {     for (size_t i = 0; i < numIntegers; i++)         CC_SHA1_Update(&ctx, someIntegers + i, sizeof(uint32_t)); } CC_SHA1_Final(digest, &ctx);  /* SHA-1 hash has been calculated and stored in 'digest'. */ ... 

Note that this does not take endianness into account. The SHA-1 calculated with this code on a PowerPC system will differ from the one calculated on an i386 or ARM system. The solution is simple--swap the bytes of the integers to a known endianness before doing the calculation:

    for (size_t i = 0; i < numIntegers; i++) {         uint32_t swapped = CFSwapInt32HostToLittle(someIntegers[i]); /* or HostToBig */         CC_SHA1_Update(&ctx, &swapped, sizeof(swapped));     } 
 
 
         
         
4
 
vote

Otra solución con una biblioteca de resumen de mensajes (NV-IOS-DIGEST):

(1) cadena

  1  

(2) números

  2  

La biblioteca de mensajes de Digest admite MD5, SHA-1, SHA-224, SHA-256, SHA-384 y SHA-512.

[blog] digests (MD5, SHA1, etc.) en iOS con clases dedicadas
http: // darutk-oboegaki .blogspot.jp / 2013/ 04 / Mensaje-digests-MD5-SHA1-etc-on-ios.html

[biblioteca] nv-ios-digert
https://github.com/takahikokawasaki/nv-ios-digest

 

Another solution with a message digest library (nv-ios-digest):

(1) String

// Create an SHA1 instance, update it with a string and do final. SHA1 sha1 = [SHA1 sha1WithString:@"Hello"];  // Get the pointer of the internal buffer that holds the message digest value. // The life of the internal buffer ends when the SHA1 instance is discarded. // Copy the buffer as necessary. The size of the buffer can be obtained by // 'bufferSize' method. unsigned char *digestAsBytes = [sha1 buffer];  // Get the string expression of the message digest value. NSString *digestAsString = [sha1 description]; 

(2) Numbers

// Create an SHA1 instance. SHA1 sha1 = [[SHA1 alloc] init];  // Update the SHA1 instance with numbers. // (Sorry, the current implementation is endianness-dependent.) [sha1 updateWithShort:(short)1]; [sha1 updateWithInt:(int)2]; [sha1 updateWithLong:(long)3]; [sha1 updateWithLongLong:(long long)4]; [sha1 updateWithFloat:(float)5]; [sha1 updateWithDouble:(double)6];  // Do final. 'final' method returns the pointer of the internal buffer // that holds the message digest value. 'buffer' method returns the same. // The life of the internal buffer ends when the SHA1 instance is discarded. // Copy the buffer as necessary. The size of the buffer can be obtained by // 'bufferSize' method. unsigned char *digestAsBytes = [sha1 final];  // Get the string expression of the message digest value. NSString *digestAsString = [sha1 description]; 

The message digest library supports MD5, SHA-1, SHA-224, SHA-256, SHA-384 and SHA-512.

[Blog] Message digests (MD5, SHA1, etc.) on iOS with dedicated classes
http://darutk-oboegaki.blogspot.jp/2013/04/message-digests-md5-sha1-etc-on-ios.html

[Library] nv-ios-digest
https://github.com/TakahikoKawasaki/nv-ios-digest

 
 
2
 
vote

sha1 no viene realmente con el objetivo-c. Puede usar el código fuente C para hashdeep y amigos, que tiene licencia en el dominio público (porque fue escrito por un empleado del gobierno de los Estados Unidos): http://md5deep.sourceforge.net/ .

 

SHA1 doesn't actually come with Objective-C. You can use the C source code for hashdeep and friends, which is licensed under the public domain (Because it was written by an employee of the United States government): http://md5deep.sourceforge.net/ .

 
 
         
         

Relacionados problema

5  Qué debo usar para los campos de contraseña en una tabla; MD5 o SHA1?  ( What should i use for password fields in a table md5 or sha1 ) 
No soy de ninguna manera un experto en seguridad o incluso un novicio. Soy un novato en la seguridad en el mejor de los casos. Alguien sugirió que uso SHA1 ...

2  ¿Hay algoritmos para poner un resumen en el archivo que se está digerido?  ( Are there algorithms for putting a digest into the file being digested ) 
¿Hay algoritmos para poner un digestimiento en el archivo que se está digerido? En otras palabras, hay algoritmos o bibliotecas, o si es posible tener un ha...

149  ¿Es seguro SHA-1 para el almacenamiento de contraseña?  ( Is sha 1 secure for password storage ) 
Conclusión: SHA-1 es tan seguro como cualquier cosa contra los ataques de preimagen, sin embargo, es fácil de calcular, lo que significa que es más fácil mo...

6  Codificación de iPhone y HMAC-SHA-1  ( Iphone and hmac sha 1 encoding ) 
Estoy tratando de recibir una llamada a Amazon Web Service y estoy atrapado en obtener la firma, miré esto, pero todavía tengo una pregunta sobre ella. usan...

125  ¿Está calculando un hash MD5, menos CPU intensivo que las funciones de la familia SHA?  ( Is calculating an md5 hash less cpu intensive than sha family functions ) 
The Bounty expira en 5 días . Las respuestas a esta pregunta son elegibles para un + 50 recomputación de reputación. ...

28  Ruby Way para generar una firma HMAC-SHA1 para OAUTH  ( Ruby way to generate a hmac sha1 signature for oauth ) 
Estoy escribiendo un pequeño programa de rubí para jugar con Twitter sobre OAuth y aún no ha encontrado una manera correcta de hacer la firma HMAC-SHA1 . Has...

2  ¿Por qué convertir SHA1 a BASE64 antes de almacenar?  ( Why to convert sha1 to base64 before storing ) 
Necesito almacenar contraseñas en mi base de datos SQL. La seguridad demasiado alta no es necesaria en este momento, sino que en lugar de usar el hash MD5 con...

4  NET SHA1CRYPTOSERVICEPROVIDER no coincide con SQL HashBytes  ( Net sha1cryptoserviceprovider not matching sql hashbytes ) 
Después de convertir algunas contraseñas de texto simple almacenado en SQL usando HashBytes, parece que no puede obtener .NET para generar un hash correspondi...

0  Python - valor binario de hashing  ( Python hashing binary value ) 
Quería usar SHA1 Alghoritm Para calcular la suma de comprobación de algunos datos, la cosa es que en la entrada de Python hashlib se da como cadena. ¿Es p...

0  ¿Es la huella dactilar del certificado siempre igual en el almacén de claves?  ( Is fingerprint of certificate always the same in keystore ) 
Revisé algunos certificados su public function updateReleaseEventHandler( pEvent:Event ): void { if(i_RequestServiceProxy != null) { ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos