如何解决从单词表和哈希读取的有效方法?
我有两个功能,如何优化此代码?在wordlist函数中,我使用fscanf从文件中读取数据,我使用临时数组进行哈希处理,因此在必须打印时可以保留读取行,然后将传递的摘要与计算的摘要进行比较(以破解) 。在md5函数中,我有带有MD5函数返回值的“结果”数组,然后将数组复制到字符串中,因为必须将char数组转换为十六进制字符串。有什么不对?这些功能正常工作,但是我可以解决一些问题以使其更快或更正确吗?
void wordlistMD5(char digest[],char hashtype[],FILE *wordlist) {
char line [512];
while (fscanf(wordlist,"%s\n",line) != -1) {
char hash[512] = {0};
strncpy(hash,line,strlen(line));
if (strcmp(md5(hash),digest) == 0) {
printf("Found!\nhash %s %s -> %s\n",hashtype,digest,line);
return;
}
}
printf("Found nothing.\n");
fclose(wordlist);
}
char *md5(char *string){
unsigned char result[MD5_DIGEST_LENGTH];
int i;
MD5((const unsigned char *)string,strlen(string),result);
for(i = 0; i < MD5_DIGEST_LENGTH; i++)
sprintf(string + 2*i,"%02x",result[i]);
return string;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。