2016-10-15 16 views
-2

秘密鍵は、暗号化の数字を考慮しません。どのようにして各文字を文字と数字で置き換えるかを数字に変更するには、XOR各文字を暗号化キーで置き換えます。これは私がこれまでに書いた暗号化コードです...どこに間違っているのか知ることができます....出力は正確ではありません。秘密鍵の拡張子

string Encrypt (string s) 
{ 
    string cipher = s; 
    int size = s.length(); 

    for(int i = 0; i < size ; i++) 
    { 
     if(isalpha(cipher[i])) 
     { 
      int x = static_cast<int>(cipher[i]) ; //changing to ascii code 

      if ((x >= 88 && x <= 90) || (x >= 120 && x <= 122)) 
       x = x - 23; 
      else 
       x = x + 3; 

      cipher[i] = static_cast<char>(x); //changing back to ascii char 
      cipher[i] ^= 5;     // XOR with 5 
     } 
     else if(isdigit(cipher[i])) 
     { 
      int x = static_cast<int>(cipher[i]) ; 
      cout << x ; 

      if (x >= 55 && x <= 57) 
       x = x - 7; 
      else 
       x = x + 3; 

      cipher[i] = static_cast<char>(x); 
      cipher[i] ^= 5;                                    
     }  
    }  
    return cipher ; 
} 
+0

あなたが説明しているのはもはやシーザー暗号ではないので、実装方法はまったくあなた次第です。 – duskwuff

+0

このタスクを既に解決している人がたくさんいます。彼らの解決策を見つけようとしましたか?簡単な検索を行うことによって? –

答えて

0

あなたはシーザー暗号についてlinkに従うことができますし、簡単にあなたのユースケースにそれを拡張することができます。あなたのアルゴリズムを使って数を他の数に置き換えるだけです(数字が2ならそれを2倍して置き換えることもできます)。その後、あなた自身のロジックを使って解読することができます。

+0

私がしたいことは、すべての文字を別の文字に置き換え、3桁のオフセットを持つすべての桁を別の桁に置き換えることです。これまでのところ、このmuhだけを行っています...しかし出力は正確ではありません。私は間違っていることを知っていません。 –

+0

質問を編集しました@hariprasath –