CS50为什么我的代码无法破解四位数的密码?

时间:2018-11-03 17:10:49

标签: c cs50

在过去的6个小时中,我遇到了C语言问题,这使我陷入困境,经过研究和研究,我决定寻求帮助!抱歉,我的英语不是我的母语,我是初学者。

我能够破解所有三位数的密码。但是,看来我无法破解四位数的密码。我已尽力理解并找出代码中的错误,但看来我做不到。请帮忙!

此外,如果有更多解释为什么我不能破解四位数长的密码而不是简单的解决方案,这将是非常不错的。预先谢谢你!

#define _XOPEN_SOURCE
#include <stdio.h>
#include <string.h>
#include <cs50.h>
#include <crypt.h>
#include <unistd.h>

int main (int argc, char* argv[])
{

    if (argc != 2){
        printf("Invalid input\n");
        return 1;
    }

    char* hash = argv[1];
    char code[4];
    char* alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    int length = strlen(alphabet);

    for (int a = 0; a <= length; a++)
    {
        code[0] = alphabet[a];
        printf("%s\n", code);
        if (strcmp(crypt(code, "50"), hash) == 0)
        {
            printf("%s\n", code);
            return 0;
        }

        for (int b = 0; b <= length; b++)
        {
            code[1] = alphabet[b];
            //printf("%s\n", code[1]);
            if (strcmp(crypt(code, "50"), hash) == 0)
            {
                printf("%s\n", code);
                return 0;
            }

            for (int c = 0; c <= length; c++)
            {
                code[2] = alphabet[c];
                //printf("%s\n", code[2]);
                if (strcmp(crypt(code, "50"), hash) == 0)
                {
                    printf("%s\n", code);
                    return 0;
                }

                for (int d = 0; d <= length; d++)
                {
                    code[3] = alphabet[d];
                    //printf("%s\n", code[3]);
                    if (strcmp(crypt(code, "50"), hash) == 0)
                    {
                        printf("%s\n", code);
                        return 0;
                    }
                }
            }
        }
    }
}

0 个答案:

没有答案