2012-05-13 8 views
1
public class Encryption { 
private static final int[] encrypt = {2, 9, 3, 4, 6, 8, 1, 0}; 
private static final int[] decrypt = new int[8]; 
private static final int minLength = 10; 

String encrypt (String password) { 
    if(password.length()<minLength) { 
     return password; 

    } else { 
     char[] arrayEncrypted = password.toCharArray(); 
     for (int i = 0; i < encrypt.length; i++) { 
      arrayEncrypted[i] = (char) (arrayEncrypted[i]); 

      } 
      return String.valueOf(arrayEncrypted); 

    } 
} 

String decrypt (String password) { 
    if (password.length()<minLength) { 
     return password; 

    } else { 
     char[] arrayDecrypted = password.toCharArray(); 
     for (int i = 0; i < arrayDecrypted.length; i++) { 
      arrayDecrypted[i] = (char) (arrayDecrypted[i]); 
     } 
     return String.valueOf(arrayDecrypted); 
    } 
} 

boolean isValidLength (String password) { 
    if (password.length()<minLength) { 
     return true; 

    } else { 
     return false; 
    } 
} 

int getMinLength(){ 
    return minLength; 
} 

} 

このプログラムは、古典的な置換関数を使用してデータを暗号化することを想定しています。暗号化クラスで使用される暗号化関数は、(2,9,3,4,6,8,1,0)のみです。暗号化プログラムの文字列のインデックスを変更

パスワードの各文字は、順列に従って新しいインデックスに移動されます。順列では2の直後に9が続くので、パスワードのインデックス2の文字をインデックス9に再割り当てする必要があります。同様に、インデックス9の文字はインデックス3に再割り当てする必要があります。最後の再割り当てでは、元のインデックス0の文字をインデックス2に配置してサイクルを完了します。

私のプログラムは非常にオフであるため、ちょうど確認します。以下は、コンパイル時のように見えるものの写真です。

Compiled

+0

5と7はどうなりましたか? –

+0

彼はリストでそれらを使用するように私に言わなかった。 –

+0

宿題タグは公式に推奨されていません:http://meta.stackexchange.com/questions/147100/the-homework-tag-is-now-officially-deprecated –

答えて

3

このラインで十分に確認してください。そこにあるもの、あなたがやっている

arrayEncrypted[i] = (char) (arrayEncrypted[i]); 

私は完全にそれを誤解していない限り、...実際には、絶対に何も。あなたは、配列内の位置iにあるキャラクターを取り出し、それを位置iに置いています。あなたは再配置文字にしようとしているとして、何がやりたいことは

encryptionResult[i] = (arrayEncrypted[encrypt[i]]); 

のようなものです。

+0

私は、暗号化結果をarrayEncryptedにしますか? –

+0

arrayEncryptedを使って元の文字列と結果の両方を保存すると、文字化けすることがあります。たとえば、 'encrypt'が' {1,2,0} 'であるとしましょう - catはatcになります。しかし、arrayEncryptedを使用して結果と元の文字列の両方を格納すると(つまり、元の文字を上書きすると)、文字列のその時点で最初の文字が変更されます。結果としてataが得られます。 – Yuka

+0

Ahhはい、どうして私はそれを変更することで動作するのですか?私はそれを変更することはできません。なぜなら、encryptionResultを初期化せずに変更できないからです。例? –

関連する問題