2016-08-14 15 views
0

テキストを長さに応じて暗号化するプログラムを作りたかったのです。たとえば、単語が "test"の場合、 "test"は4文字であるため、単語の各文字を4番目の次の文字にシフトします。これは "xiwx"に "テスト"を行います。私はすでに自分のプログラムの一部を作りました。ここにあります:Wordの長さに応じてテキストを暗号化するプログラム

public static void main(String[] args){ 
    string.toLowerCase(); 
    int charPos = 0; 
    int length = 0; 

    for(int i = 0; i < string.length(); i++){ 
     charPos = 0; 
     length = 0; 
     while(!(string.charAt(i) == ' ')){ 
      length = charPos; 
      charPos++; 
     } 
     length--; 
     for(int j = 0; j<=length; j++){ 
      char cha =string.charAt(i); 

      //HERE IS WHERE THE CHAR ADDING WILL HAPPEN 

     } 
     i++; 

    } 

}//end 
+2

あなたは 'char shifted = cha + 3'を実行できます。 ZからAにロールオーバしてください。 – Thilo

+0

あなたの質問は何ですか? –

+0

@Thiloどうすれば使用できますか? –

答えて

0

このタイプの暗号化を実現するには、単純に1つのループを使用する方法があります。

暗号化:

String str = "test"; // normal string 

String encryptedStr = ""; // start empty then add characters 

for (char ch : str.toCharArray()) // loop through each character in str 

    encryptedStr += (char) (ch + str.length()); // need to cast addition to char 

System.out.println("Encrypted String: " + encryptedStr); // output encrypted string 

だから、アイデアは、それはあなたが各文字に追加しているものだとして、文字列の長さを取得するために長さ()メソッドを使用することです。各文字はASCIIの整数値を持つので、それらの文字に対して数学演算を実行できます(この場合は、各文字に長さを加えます)。結果は整数になるので、結果に文字を変換して文字に戻す必要があります。次に、この文字を空の文字列に連結することができます。これを元の文字列の各文字(forループを使用して文字列をchar配列に変換する)で行うと、最終的に暗号化された文字列が最後に取得されます。私たちは、各文字の長さを引く除き

String str = "xiwx"; // encrypted string 

String decryptedStr = ""; // start empty then add characters 

for (char ch : str.toCharArray()) // loop through each character in str 

    decryptedStr += (char) (ch - str.length()); // need to cast subtraction to char 

System.out.println("Decrypted String: " + decryptedStr); // output decrypted string 

同じ考え方は、復号化で動作します。

希望しました。

+0

私はあなたが(文字)+長さを行うことができます知っている。しかし、それは今、その手紙のアスキー番号として表示されます... –

+2

ええ、他の人がそれがどのように動作するか知りたい場合に備えて。 –

+0

liamあなたは私のために投票できますか? –

関連する問題