2017-04-12 12 views
-2

私は混乱しています。同じプログラムで暗号化と復号化を行うcでXOR暗号化プログラムを使用しています。CでXOR暗号化を実装してクライアントからサーバーにデータを送信する方法

次に、クライアントが暗号化(XOR)を使用してサーバーにデータ/文字列メッセージを送信してから、サーバーが暗号化された文字列メッセージをcプログラムで受信する必要があります。

これは私のコードです:

#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

正確に何を求めていますか? –

+0

xor暗号化を使用してクライアントからサーバーにメッセージを送信するコードが必要です – Megha

+0

独自の暗号化を作成しないでください。クライアントサーバーの通信にhttpsを使用するだけで、すべてが暗号化されます。 [「シュナイダーの法則」](https://www.schneier.com/blog/archives/2011/04/schneiers_law.html):最も無慈悲なアマチュアから最高の暗号技術者まで、誰でも自分自身でできるアルゴリズムを作成できます壊れない – zaph

答えて

0

はあなたの問題についての私の考え方と整合するようにしてください。 あなたのコードを少し編集しました:

#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

このような単純なスキームには本当のセキュリティはありません。 – zaph

+0

はい、そのヒントです。あなたはセキュリティスキームを実装しなければなりません。 –

関連する問題