我在反转此代码以从qwerty解密回abc时遇到麻烦。

我不知道从哪里开始。
我试图用包含ABC的字符串替换index ...
我还尝试将密文交换为abc,并将索引更改为qwerty,但无济于事。

这是原始代码

#include <stdio.h>
#include <string.h>

int main() {
    char* ciphertext = "qwertyuiopasdfghjklzxcvbnm";    // cipher lookup

    char input[500];                                    // input buffer
    printf("Enter text: ");
    fgets(input, sizeof(input), stdin);                 // safe input from user
    input[strlen(input) - 1] = 0;                       // remove the \n (newline)
    int count = strlen(input);                          // get the string length

    char output[count];                                 // output string
    for(int i = 0; i < count; i++) {                    // loop through characters in input
        int index = ((int) input[i]) - 97;              // get the index in the cipher by subtracting 'a' (97) from the current character
        if(index < 0) {
            output[i] = ' ';                            // if index < 0, put a space to account for spaces
        }
        else {
            output[i] = ciphertext[index];              // else, assign the output[i] to the ciphertext[index]
        }
    }
    output[count] = 0;                                  // null-terminate the string

    printf("output: %s\n", output);                     // output the result
}


我的努力什么也没做,只会重印我输入的内容

最佳答案

因此,您从“ a”(ascii 97)开始,然后通过char_value - 97将其转换为索引为字符数组

要转换回纯文本,您需要从q转到a

一种方法是搜索ciphertext以找到字符(q)出现的索引,然后将97添加到该索引以获取原始值。

关于c - 解密qwert密码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55897284/

10-12 15:01