努力在C中进行反向解密算法

时间:2018-08-03 22:44:08

标签: c encryption reverse

这是我有关StackOverflow的第一个问题,因此,如果我做错了什么,请不要对我太苛刻。 无论如何,我在所查找的C文件中找到了某种加密方式,并且拥有解密代码,但是我不知道如何反转它,因此可以将自己的字符串加密到其中。

    int r;
    char str[] = {"4:;145;14;81583"};
    for(r = 0; (r < 100 && str[r] != '\0'); r++)
    str[r] = str[r] - 3;

加密的字符串(4:; 145; 14; 81583)是IP 178.128.185.250 就像我说的那样,我想知道如何反转解密方法,以便可以加密自己的字符串。帮助吗?

1 个答案:

答案 0 :(得分:2)

这很简单:解密是- 3,所以加密是+ 3

解密

#include <stdio.h>

int main(void) {
    int r;
    char str[] = {"4:;145;14;81583"};
    for(r = 0; (r < 100 && str[r] != '\0'); r++)
        str[r] = str[r] - 3;
                //      ^ notice: minus
    printf("%s\n", str);
    return 0;
}

输出:

178.128.185.250

加密

include <stdio.h>

int main(void) {
    int r;
    char str[] = {"178.128.185.250"};
    for(r = 0; (r < 100 && str[r] != '\0'); r++)
        str[r] = str[r] + 3;
                //      ^ notice: plus
    printf("%s\n", str);
    return 0;
}

输出:

4:;145;14;81583

编辑:

for(r = 0; (r < 100 && str[r] != '\0'); r++)

是直接从OP问题中复制的。据我所知,它可以简化为:

for(r = 0; str[r] != '\0'; r++)

没有任何问题。