gpt4 book ai didi

hash - 现代计算机可以计算多少个SHA256哈希?

转载 作者:行者123 更新时间:2023-12-03 14:50:48 25 4
gpt4 key购买 nike

我想知道基于不同字符集破解哈希值所需的数学时间。

例如,仅使用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);
}


编译:

gcc -lcrypto -O3 -o test test.c


结果(我知道,我对计算机名不是很有创意):

nightcracker@nightcracker-pc:~/c/sha256$ time ./test
11881376

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


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

编辑

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

关于hash - 现代计算机可以计算多少个SHA256哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4764026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com