2012-05-10 4 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[] encrypt = password.toCharArray(); 

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

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

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

    } else { 
     return false; 
    } 
} 

int getMinLength(){ 
    return minLength; 
    } 
} 

私のパスワード(ドライバはまだ作成されていません)を暗号化するとしますが、変数(暗号化と復号化)を正しく使用したかどうかはわかりません。暗号化と復号化の変数は、パスワードがインデックスをユーザーが入力したものに変更し、また知らないようにするためですが、逆のpurmutationメソッドをどこかで使用することを想定していますが、どんな助け?私のプログラムが途方もない、または近くにいるかどうか教えてくれる人が必要です。クラシック順列を使用した暗号化

+0

あなたは戻って、深呼吸をして、あなたのものを完全に書き直すことができますか? –

+0

また、コードの書式設定がSOで確実に行われるようにしばらく時間をとります。余分な余白(空行1行で十分です)を取り除き、インデントが正しく表示されるようにします。私たちは助けたいと思っていますが、私たちのために*簡単にしています。 :-) –

+0

本当にすべて私は私のドライバを書くことができる場合は私は思っています。このプログラムは私のパスワードを暗号化して、それを適切に解読しますか?何らかの理由で私は変数の暗号化と復号化が使用されていないと私は私のパスワードを整理し、それを正しく整理する方法と場所を私のプログラムに入れているのか分からない... –

答えて

2

警告 - 良い警告ある - なぜならshadowing

ラインである:

char[] encrypt = password.toCharArray(); 

は[も] [静的] メンバ変数と呼ばれる原因encryptをそのメソッド内でシャドウイングします。したがって"順列値"は決して使用されず、使用されるアルゴリズムは恐ろしくを壊します。 (「置換値」は暗号化と復号化で同じではないのでひどく壊れます)[同じ]「置換値」を使用しても復号化アルゴリズムには別の問題がありますが、 。)

ソリューション:

  1. 使用、より良い/異なる名前の順列のための(例えばencryptionKey)。
  2. [static] メンバー変数を参照するには、Encryption.encryptを明示的に使用してください。

もちろん、アルゴリズムを確認してください。 Encryption.decryptの必要はなく、他のエラーを導入することができます。

ハッピーコーディング。

関連する問題