简单的XOR算法

Wil*_*3uk 2 c string cryptography xor

虽然我经常使用C++,但我正在努力克服C差异(主要是在字符串中).

你能否告诉我一个简单的单一功能,它使用XOR比较用密钥加密消息.

谢谢

编辑:密钥和消息都是char*

Tim*_*Tim 9

好吧,我乱了一会儿,想出了这个(只是模糊测试过):

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

char * xorencrypt(char * message, char * key) {
    size_t messagelen = strlen(message);
    size_t keylen = strlen(key);

    char * encrypted = malloc(messagelen+1);

    int i;
    for(i = 0; i < messagelen; i++) {
        encrypted[i] = message[i] ^ key[i % keylen];
    }
    encrypted[messagelen] = '\0';

    return encrypted;
}

int main(int argc, char * argv[]) {
    char * message = "test message";
    char * key = "abc";

    char * encrypted = xorencrypt(message, key);
    printf("%s\n", encrypted);
    free(encrypted);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

请注意,该函数会xorencrypt分配并返回一个新字符串,因此调用者有责任在完成后释放它.

  • 密钥长度的良好解决方案; 我没想到%. (2认同)