Hash 现代计算机能计算多少个SHA256哈希?

Hash 现代计算机能计算多少个SHA256哈希?,hash,cpu,sha2,Hash,Cpu,Sha2,我想知道破解基于不同字符集的散列所需的数学时间 例如,仅使用7个字母的US-ASCII字母字符,我们就知道可以使用267个可能的序列。知道一台计算机每分钟能生成多少个哈希值,我就能知道生成所有可能的哈希值和破解某个7个字符的哈希值(生日攻击除外)需要多长时间 例如,以上面的数字为例,如果一个现代四核每分钟可以生成100万个哈希值,则需要8031810176/1000000/60=133.86小时才能找到该范围内所有可能的哈希值 另外,带有本机AES的新Sandy Bridge Intel芯片如何

我想知道破解基于不同字符集的散列所需的数学时间

例如,仅使用7个字母的US-ASCII字母字符,我们就知道可以使用267个可能的序列。知道一台计算机每分钟能生成多少个哈希值,我就能知道生成所有可能的哈希值和破解某个7个字符的哈希值(生日攻击除外)需要多长时间

例如,以上面的数字为例,如果一个现代四核每分钟可以生成100万个哈希值,则需要
8031810176/1000000/60=133.86
小时才能找到该范围内所有可能的哈希值


另外,带有本机AES的新Sandy Bridge Intel芯片如何发挥作用?

我使用OpenSSL SHA256实现用C编写了此测试

#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);
}
结果(我知道,我对计算机名不是很有创意):

这就是
11881376/182.4=65139
hash每秒。然后计算所有哈希值需要
26^7/101821/3600=34小时。请注意,所有这些都是在单线程应用程序的Q6600四核CPU上完成的,不包括将哈希写入文件

编辑


Woops,我正在计算所有N个字符及其以下的字符串的哈希值。更正并更新数据。

请记住,GPU的散列速度比CPU快50-100倍。编程更难,但效率更高。有关数字,请访问www.bitcontalk.com。我知道我在Radeon HD5830上每秒执行6.22亿个SHA-256。

所以-启动4个程序,您可以每秒生成大约40万个哈希。我生成了错误的字符串,但现在一切正常。很明显,我在一次跑步中也很幸运(注意,这是一台PC,其他很多东西也在运行)。谢谢,我碰巧有Q8200,所以这非常适合我自己。我想知道新的Sandy Bridge CPU的运行速度有多快。您选择的数字(26)只是小写英文字母。上限、下限和下限数字应为62^7。所有可打印的ASCII码都是95^7。SHA256和其他类似的散列最好由GPU破解。@user1200129:我遵循了问题的要求:
例如,仅使用7个字母的US-ASCII字母字符,我们知道可以使用267个可能的序列。
“如果要做某事,请做好”-GPU
gcc -lcrypto -O3 -o test test.c
nightcracker@nightcracker-pc:~/c/sha256$ time ./test
11881376

real    3m2.431s
user    3m2.335s
sys 0m0.008s