2016-12-21 22 views
-4

私はこれに問題があり、あなたの誰かがそれを修正できるかどうか知りたかったので、非常に感謝します!私は1回目の作品をつもりの私のメッセージを送信すると、文字のテキストと第二の時間を表示しようとするとつもりです:私はstrlenのヘルプが必要

は問題私のゲームの人々に送信するメッセージを暗号化しようとしています

暗号化されたテキストを表示し、私は人々が

("ZFDKWEK,CSJ,$MS(,,,)")

if (MessageEnc) 
        { 
        if (GET_GAME_TIMER() >= destroy_tick2){ 
         destroy_tick2 = GET_GAME_TIMER() + 82000; 
         int i = 0; 
         for (i = 0;i<18;i++) 
         { 
         if (i == PlayerId()) continue; 
         int Handle = GetPlayerHandle(i); 
         if(!DoesEntityExist(Handle)) continue; 
         char key = 'j'; //Key 
         char *encMess = "ZFDKWEK,CSJ,$MS(,,,)"; 

         for (int i = 0; i < strlen(encMess); i++) 
         { 
          encMess[i] ^= key; 
         } 
         char buf[64]; 
        snprintf(buf, sizeof(buf), "~r~%s", encMess); 
        NETWORK::NETWORK_HANDLE_FROM_PLAYER(i, &networkHandle, 13); 
        NETWORK::NETWORK_SEND_TEXT_MESSAGE(buf, &networkHandle);  
        printf(encMess);       
        } 
        } 
        } 
+1

は、スタックオーバーフローへようこそ。 [ツアー]、[質問]、[mcve]の作成方法をお読みください。テキストを投稿できるときに画像を投稿しないでください。「助けが必要です」、「これに少し問題があります。あなたの誰かがそれを修正できるかどうかを知りたがっています。」、 "決してこれをしないでください。もしあなたが私がペイパルで寄付してくれるよう助けることができるなら、:)"。ありがとう。 – Stargateur

+0

だから、お互いに1枚おきにスキップしてください。 –

+1

回答があった後で質問を破棄しないでください。それはまさにSOにはお粗末ではありません。 –

答えて

3

あなたのXOR演算は、その後、すべての奇数反復と12月にリテラル静的な文字列を暗号化していることを見たくありません反復してもそれを跳ね返す。文字列リテラルの変更を避けるには、tmpバッファを使用します。私はルールを思い出すことはありませんが、文字列リテラルのメモリ内容を変更しようとすると、の定義されていない動作テリトリが入力されていると思います。ですから、まずこの種のコーディングを避けるのが最善です。

変更コードのセット:これに

char *encMess = ",Z8J'Z$/3J.8Z:J&Z((3J-ZJ9?(9)8#(/J>ZJ'3J3Z?>?(/PJ9!3+)8Z"; 

for (int i = 0; i < strlen(encMess); i++) 
{ 
    encMess[i] ^= key; 
} 

char buf[64]; 
snprintf(buf, sizeof(buf), "~r~%s", encMess); 

char tmp[64]; 
const char *encMess = ",Z8J'Z$/3J.8Z:J&Z((3J-ZJ9?(9)8#(/J>ZJ'3J3Z?>?(/PJ9!3+)8Z"; 

strcpy(tmp, encMess, 64); 
size_t len = strlen(encMess); 

for (int i = 0; i < len; i++) 
{ 
    tmp[i] ^= key; 
} 

char buf[64]; 
snprintf(buf, sizeof(buf), "~r~%s", tmp);