現在、MD5ハッシュに対してブルートフォース攻撃を行うJavaアプリケーションを作成しています。私はuseハッシュ入力を取るJFrameを作った。例えばスレッドから別のクラスに値を返す方法
私はMD5に言葉 "パスワード" をハッシュ化されました。 JButtonがクリックされると(図1)、 ハッシュを比較クラスに送信します。比較クラスはすべての可能性を順番に繰り返します。 IEはAAAAAAAAから移動します。次にAAAAAAABなどに送信します。それらをハッシュします。可能性のハッシュが単語 "パスワード"のハッシュと一致した場合。一致が見つかったことをユーザーに知らせるダイアログボックスが表示されます。
私の問題は、setterとgettersを使わずにimplements Runnable
のGUIクラスにあるスレッドの値を返す方法がわかりません。
public void actionPerformed(ActionEvent e)
{
if(e.getSource().equals(bruteForceButton))
{
enterLabel.setText("Brute force in process");
String enteredHash = input.getText();
int lengthOfPass = (int) length.getSelectedItem();
//Send the information to the comparative class
HashComparative comp = new HashComparative();
comp.setHash(enteredHash);
comp.setLengthOfPass(lengthOfPass);
Thread t1 = new Thread(comp);
t1.start();
hash.setText(comp.getHash());
}
これは、適切なデータを比較クラスに送信するスレッドを開始します。 そしてもう一つのクラスがあります。
public class HashComparative implements Runnable
{
private String h;
private int l;
private Thread thread;
public void start()
{
thread = new Thread(this, "");
thread.start();
}
@Override
public void run()
{
try
{
//CODE WILL GO HERE TO COMPUTE HASHES
setHash(h);
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void setHash(String h)
{
this.h = h;
}
//Returns the hash currently being compared
public String getHash()
{
return h;
}
}
ブルートフォースが動作している間。ハッシュ文字列をGUIクラスに送り返してテキストをJLabelに設定することで、表示しようとするハッシュを表示したい。例
のために私はオンライン見てきましたが、これに対する答えを見つけることができません。どんな助けがありがとう
'ExecutorService'を使用し、' Callable'の代わりを実装する複数のスレッドによって変更してアクセスされるように、あなたは
h
volatile
を作るためにだけ必要があります。 'Runnable'です。 –少し深めてください。 –
https://docs.oracle.com/javase/tutorial/essential/concurrency/executors.html –