Как я могу добавить строку, специфичную для пользователя, в качестве ключа для простого шифра? - PullRequest
0 голосов
/ 28 апреля 2019

Я изменяю этот простой qwerty cypher, чтобы он принимал ключ, выбранный пользователями. Могу ли я просто добавить строку, чтобы заменить жестко закодированный ключ, или есть еще что сделать?

Я пытался использоватьстрока из пользовательского ввода scanf.Он работает, когда он жестко запрограммирован, но я бы хотел добавить его как пользователя.

Исходный код, с которым я работаю:

char* ciphertext = "qwertyuiopasdfghjklzxcvbnm";    

    char input[500];                                    
    printf("Enter text: ");
    fgets(input, sizeof(input), stdin);                 
    input[strlen(input) - 1] = 0;                       
    int count = strlen(input);                           
    char output[count];                                 
    for(int i = 0; i < count; i++) {                    
        int index = ((int) input[i]) - 97;             
        if(index < 0) {
            output[i] = ' ';                            
        }
        else {
            output[i] = ciphertext[index];

Я заменил:

char* ciphertext = "qwertyuiopasdfghjklzxcvbnm";

на:

char KEY[26];                                        
    printf("Enter key text:");
    fgets(KEY, sizeof(KEY), stdin);

А такжезамена зашифрованного текста [index] для KEY [index] в последней строке.

Мой код выглядит следующим образом:

char KEY[26];                                        
    printf("Enter key text:");
    fgets(KEY, sizeof(KEY), stdin);                     

    char input[999];                                    
    printf("Enter text: ");
    fgets(input, sizeof(input), stdin);                 
    input[strlen(input) - 1] = 0;                       
    int count = strlen(input);                          

    char output[count];                                 
    for(int i = 0; i < count; i++) {                     
        int index = ((int) input[i]) - 97;              
        if(index < 0) {
            output[i] = ' ';                            
        }
        else {
            output[i] = KEY[index];                     
        }
    }
    output[count] = 0;                                  

    printf("output: %s\n", output);

Код запускается, разрешает и вводит для KEY, но затем пропускает, позволяя пользователюдобавить текст для шифрования и распечатать письмо как зашифрованное сообщение.

Когда я использую ключ: qwertyuiopasdfghjklzxcvbnm, он печатает d (13-й ввод), когда я использую: qazwsxedcrfvtgbyhnujmikolp, он печатает y (16-й ввод), когда я использую: qazxswedcvfrtgbnhythholjnjjnjjjnjjnjjnjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjnjjjjj также как:

...