2017-04-12 7 views
-2

Ich bin so verwirrt, ich habe ein XOR-Verschlüsselungsprogramm in c, die Verschlüsselung und Entschlüsselung in demselben Programm, aber ich will Verschlüsselung und Entschlüsselung getrennt sein.So implementieren Sie XOR-Verschlüsselung in C zum Senden von Daten vom Client toServer

Dann möchte ich Code, wo Client senden Sie die Daten/Zeichenfolge Nachricht an Server mit Verschlüsselung (XOR) dann Server sollte verschlüsselte Zeichenfolge Nachricht in c-Programm erhalten.

Dies ist mein Code:

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

void encryptDecrypt(char *input, char *output) 
{ 
char key[] = {'K', 'C', 'Q'}; //Can be any chars, and any size array 
int i; 
for(i = 0; i < strlen(input); i++) { 
    output[i] = input[i]^key[i % (sizeof(key)/sizeof(char))]; 
} 
} 

int main() 
{ 
char baseStr[1000]; 

printf("Enter string:"); 
fgets(baseStr, sizeof baseStr, stdin); 
char encrypted[strlen(baseStr)]; 
encryptDecrypt(baseStr, encrypted); 
printf("Encrypted:%s\n\n\n", encrypted); 
char decrypted[strlen(baseStr)]; 
encryptDecrypt(encrypted, decrypted); 
printf("Decrypted:%s\n\n\n", decrypted); 
} 
+3

Was genau fragen Sie? –

+0

Ich brauche einen Code zum Senden von Nachrichten von Client zu Server mit XOR-Verschlüsselung – Megha

+0

Versuchen Sie nicht, Ihre eigene Verschlüsselung zu erstellen. Für die Client-Server-Kommunikation verwenden Sie einfach https, alles wird verschlüsselt. ["Schniersches Gesetz"] (https://www.schneier.com/blog/archives/2011/04/schneiers_law.html): Jeder, vom ahnungslosesten Amateur bis zum besten Kryptologen, kann einen Algorithmus erstellen, den er selbst kann nicht brechen. – zaph

Antwort

0

Versuchen mit meinem Denken zu Ihrem Problem auszurichten. Ich habe Ihren Code ein wenig bearbeitet:

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

void encryptDecrypt(char *input, char *output) 
{ 
    char key[] = { 'K', 'C', 'Q' }; //Can be any chars, and any size array 
    int i; 
    for (i = 0; i < strlen(input); i++) { 
     output[i] = input[i]^key[i % (sizeof(key)/sizeof(char))]; 
    } 
    output[strlen(input)] = '\0'; 
} 
void serverDecryptedText(char* encryptedText, char* decryptedNormalText) 
{ 
    /*Assumed: Server got encryptedText*/ 
    encryptDecrypt(encryptedText, decryptedNormalText); 
    /*You will get original text in decryptedNormalText*/ 
} 
void sendToServerWithEncryption(char* normalText, char* encryptedText) 
{ 
    encryptDecrypt(normalText, encryptedText); 
    /*Implement code to send encryptedText to server here */ 
} 
int main() 
{ 
    char baseStr[1000]; 
    printf("Enter string:"); 
    scanf("%s",baseStr); 

    char *encrypted = (char*)malloc(strlen(baseStr)+1); 
    char *decrypted = (char*)malloc(strlen(baseStr) + 1); 

    sendToServerWithEncryption(baseStr, encrypted); 

    printf("Encrypted:%s\n\n\n", encrypted); 

    serverDecryptedText(encrypted, decrypted); 

    printf("Decrypted:%s\n\n\n", decrypted); 
    return 0; 
} 
+0

Es gibt keine echte Sicherheit in einem so einfachen Schema. – zaph

+0

Ja, es ist ein Hinweis. Sie müssen Ihr Sicherheitsschema implementieren. –

Verwandte Themen