online generar decrypt hash cpu sha2

hash - generar - sha256 decrypt



¿Cuántos hashes SHA256 puede computar una computadora moderna? (2)

Escribí esta prueba en C usando la implementación de OpenSSL SHA256.

#include <stdio.h> #include <string.h> #include "openssl/sha.h" // http://stackoverflow.com/questions/4764608/generate-all-strings-under-length-n-in-c/4764686#4764686 int inc(char *str) { if (!str[0]) return 0; if (str[0] == ''z'') { str[0] = ''a''; return inc(str + sizeof(char)); } str[0]++; return 1; } unsigned char buffer[65]; char* hashstring(char *str, int len) { char hash[SHA256_DIGEST_LENGTH]; // the openssl hash SHA256_CTX sha256; int i; // counter SHA256_Init(&sha256); SHA256_Update(&sha256, str, len); SHA256_Final(hash, &sha256); for (i = 0; i < SHA256_DIGEST_LENGTH; i++) { sprintf(buffer + (i * 2), "%02x", hash[i]); // convert openssl hash to mortal human string } return buffer; } int main(int argc, char *argv[]) { int N = 4; // max length string char str[N+1]; // the string holder int i; // counter unsigned int tot = 0; // number of hashes calculated for (i = 0; i < N; i++) str[i] = ''a''; str[N] = 0; do { hashstring(str, N); tot++; } while(inc(str)); printf("%d/n", tot); }

Compilar:

gcc -lcrypto -O3 -o test test.c

Y los resultados (lo sé, no soy muy creativo con nombres de computadora):

nightcracker@nightcracker-pc:~/c/sha256$ time ./test 11881376 real 3m2.431s user 3m2.335s sys 0m0.008s

Eso es 11881376 / 182.4 = 65139 hashes por segundo. Entonces son 26^7/101821/3600 = 34 horas para calcular todos los hash. Tenga en cuenta que todo esto se hizo en una CPU Q6600 de cuatro núcleos en una aplicación de un único subproceso y se excluyó la escritura de los hashes en el archivo.

EDITAR

Woops, estaba calculando todos los hashes de cadenas con N caracteres y debajo . Corregido y actualizado de datos.

Quiero saber el tiempo matemático requerido para descifrar hashes basados ​​en diferentes conjuntos de caracteres.

Por ejemplo, al usar solo caracteres alfabéticos de 7 letras, US-ASCII, sabemos que hay 26 7 posibles secuencias que podrían usarse. Saber cuántos de estos podría generar una computadora cada minuto me daría una idea de cuánto tiempo llevaría generar todos los hash posibles y descifrar un cierto hash de 7 caracteres (los ataques de cumpleaños a un lado ).

Por ejemplo, tomando el número anterior, si un núcleo cuádruple moderno pudiera generar 1 millón de hashes por minuto, tomaría 8031810176 / 1000000 / 60 = 133.86 horas para encontrar todos los 8031810176 / 1000000 / 60 = 133.86 hash posibles en ese rango.

Además, ¿cómo funciona el nuevo Sandy Bridge Intel chips con AES nativo en esto?


Recuerde que una GPU puede hacer hash 50x - 100x más rápido que una CPU. Es más difícil de programar, pero más eficiente. Consulte www.bitcointalk.com para conocer los números. Sé que hago 622 millones de SHA-256 por segundo en una Radeon HD5830.