2016-10-01 23 views
1

私はvigenere暗号の追加部分を作成しようとしており、アルファベットの文字を一緒に追加する必要があり、その結果アルファベットの別の文字になります。これは、特殊文字ではない標準アルファベットでなければなりません。全26文字 アルファベット番号に関連付けられた番号を取得できます。例えばA = 0 B = 1 ... z = 25だから、その数字の文字に相当する文字列をどのように作成することができますか?アルファベットに別の文字を含む文字を追加するにはどうすればよいですか?

public String encrypt(String orig, String iv, String key) { 
    int i, j, result; 

    String cipherText = ""; 
    int b = iv.length(); 
    //loops through the entire set of chars 
    for (i = 0; i < text.length; i += b) { 
     //Splits the char into block the size of the IV block. 
     for (j = 0; j < b; j++) { 
      //checks to for first block. If so, begains with iv. 
      if (i == 0) { 
       //adding the iv to the block chars 
       char one = text[j], two = iv.charAt(j); 
       result = (((iv.charAt(j) - 'a') + (text[j] - 'a')) % 26); 
       //prints out test result. 
       System.out.println(one + " + " + (iv.charAt(j) - 'a') + "= " + result); 
      } else { 
       //block chainging, addition, with new key. 
       result = ((key.charAt(j) - 'a') + (text[j + i] - 'a')) % 26; 

       //   System.out.println(result); 
      } 
     } 
    } 

    return cipherText; 
} 
+0

提案:より良い暗号、あるいは、同様に、あなたの質問に複数のタグを追加するには、タイトルがクリプトを話していることが明確にすることを行った場合 – gia

答えて

0

私は文字配列で新しいメソッドを作成しました。すべての入力はアルファベットでした。問題の番号を持つメソッドを呼び出し、charを返しました。 'a'の数値コード以来

public char lookup(int num){ 
    char[] alphabet = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; 

    return alphabet[num]; 
} 
0

'z'charタイプ(UTF-16)と連続している、あなたは、単に加えて使用することができますchar + intintになりますので

public char lookup(int num) { 
    return (char)('a' + num); 
} 

を、我々は必要型をcharにキャストする。

0

チャーは自動的にintに変換されます。 たとえば、これを試してみてください。

final char aChar = 'a'; 
    char bChar = aChar + 1; 
    char uChar = (char) (bChar + 19); 
    char qChar = (char) (uChar - 4); 

    System.out.println(aChar+" "+ bChar + " " + qChar + " " + uChar); 
関連する問題