works:programmer:cpp:xor-string-c

Кодирование стороки методом XOR

Отличная простейшая кодировка строки, или файла методом XOR.

xor.c
#include <stdio.h>
#include <stdlib.h>
 
 
char pass[] = "secret";
char buff[] = "Hello, World!";
 
void strxor(char* x, int xl, char* n, int nl) {
    for ( int i=0 ; i<xl ; i++ ) {
        char pwdor = n[i%nl];
        x[i] = (x[i] ^ pwdor) & 0xFF;
    }
}
 
 
int main() {
    int blen = sizeof(buff);
 
    char* buff1 = (char*) malloc(blen);
    memcpy(buff1, buff, blen);
    strxor(buff1, blen, pass, strlen(pass));
 
    char* buff2 = (char*) malloc(blen);
    memcpy(buff2, buff1, blen);
    strxor(buff2, blen, pass, strlen(pass));
 
    for ( int i=0 ; i<blen ; i++ ) { // Textual Out
        printf("%C  ", buff[i]);
    } printf("\n");
 
    for ( int i=0 ; i<blen ; i++ ) { // HEX out
        printf("%02X ", buff[i]);
    } printf("\n");
 
    for ( int i=0 ; i<blen ; i++ ) { // Encrypted out
        printf("%02X ", buff1[i]);
    } printf("\n");
 
    for ( int i=0 ; i<blen ; i++ ) { // Encrypted textual
        printf("%C  ", buff1[i]);
    } printf("\n");
 
    for ( int i=0 ; i<blen ; i++ ) { // Decrypted textual
        printf("%C  ", buff2[i]);
    } printf("\n");
 
    free(buff1);
    free(buff2);
 
    return 0;
}
works/programmer/cpp/xor-string-c.txt · Last modified: 2022/05/20 10:17 by Chugreev Eugene