2012-02-27 7 views
2

私はインターネットから入手したJava文字列暗号化/復号化クラスを実行しています!ここに少しの変更を加えたクラスがあります:異なる出力を生成する文字列暗号化/復号化クラス

public class EncrypterDecrypter { 暗号のecipher; 暗号dcipher;

EncrypterDecrypter(SecretKey key) 
{ 
    try { 
     ecipher = Cipher.getInstance("DES"); 
     dcipher = Cipher.getInstance("DES"); 
     ecipher.init(Cipher.ENCRYPT_MODE, key); 
     dcipher.init(Cipher.DECRYPT_MODE, key); 

    } catch (javax.crypto.NoSuchPaddingException e) { 
    } catch (java.security.NoSuchAlgorithmException e) { 
    } catch (java.security.InvalidKeyException e) { 
    } 
} 

}

パブリッククラスEncryptionTester {

public static void main(String[] args) 
{ 
    try 
    { 
     //Generate a temporary key. 
     SecretKey key = KeyGenerator.getInstance("DES").generateKey(); 

     //Create Encrypter/Decrypter class 
     EncrypterDecrypter crypto = new EncrypterDecrypter(key); 

     //More lines of code to use crypto object 
    } 
    catch (Exception e) 
    { 
    } 
} 

}

私の問題は、私はEncrypterDecrypterクラスの新しいインスタンスを作成するたびに、私はまだ文字列を暗号化貴様を得るということです暗号化する文字列はまだ同じです!私の心は、新しいインスタンスが作成されるたびに変更され続けるSecretKeyオブジェクトが問題であることを私に伝えます。Encrypter/Decrypterクラスのすべてのインスタンスに対してSecretKeyオブジェクトをどのようにすることができるかを知りたいと思います問題の原因!

+0

投稿する関連するコードは 'EncrypterDecrypter'オブジェクトを初期化ラインであろう。あなたは 'キー'のために何を渡していますか? – dlev

+0

あなたは正しいです、私はコードを修正しました!私はDESキーのアルゴリズムを渡しています! – Xris

答えて

1

...バイト配列からのSecretKeyを生成します。 そのようなあなたの鍵を生成するようにしてください:

final SecretKeyFactory skf = SecretKeyFactory.getInstance("DES"); 
final SecretKey key = skf.generateSecret(new DESKeySpec(new byte [] {/*The key*/})); 
instance.EncrypterDecrypter(key);      //Initialization of your Cipher objects 
String encrypted = instance.encrypt("This is a test"); 
System.out.println(instance.decrypt(encrypted));  //"This is a test" 

あなたがキャッチに何かをする必要があります。

+0

パッケージはDESKeySpecですか? – Xris

+0

見つかったのは:javax.crypto.spec – Jerome

+0

キーは何ですか?キーのサイズは限られていますか? Thanx – Xris

1

あなたがjavax.cryptoパッケージを使用した場合は、暗号化とdecryp方法は大丈夫に見える

byte raw[] = new byte[]{0x001,0x002,0X002,0X002,0X002,0X002,0X002,0X002,0X002,0X002,0X002,0X002,0X002,0X002,0X002,0X002}; 
     SecretKeySpec spec = new SecretKeySpec(raw, "DES"); 
関連する問題