【发布时间】:2013-08-19 11:29:38
【问题描述】:
不幸的是,我不擅长编写 java 代码,我需要您的帮助才能提出适当的解决方案。我被要求编写一个执行以下操作的应用程序;
如果某个数据被重新散列,应用程序必须确定是否存在任何冲突,给定次数。 (默认为 1000 次,但要准备增加它)。 应用程序必须将文本数据(数据,即密码)作为输入。 应用程序必须接受一定数量(重新散列的次数)广告输入。 应用程序必须输出多次出现的哈希值。 !!!速度很重要。
根据要求,我找到了一段代码生成给定文本的哈希码,但我无法根据我被要求编写的应用程序来实现它。有人可以帮我做吗?
这是我找到的代码;
public String MD5(String md5) {
try {
java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
byte[] array = md.digest(md5.getBytes());
StringBuffer sb = new StringBuffer();
for (int i = 0; i < array.length; ++i) {
sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3));
}
return sb.toString();
} catch (java.security.NoSuchAlgorithmException e) {
}
return null;
}
这是我编写的代码,但似乎不起作用。显然,我做错了什么。有没有人可以告诉我代码的错误部分?非常感谢任何帮助。
private void jButtonrehashingMousePressed(MouseEvent evt) {
String input = jTextAreaRehashing.getText();
List<String> hashes = new ArrayList<String>();
hashes.add(MD5(input));
for (int i = 0; i <= (int) jComboBoxNumberOfHash.getSelectedItem(); i++)
{
input = hashes.get(i);
hashes.add(MD5(input));
}
for (int j = 0; j <= hashes.size(); j++)
{
for (int k = j +1; k < hashes.size(); k++)
{
if (hashes.get(j).equals(hashes.get(k)))
{
jTextAreaRehashing.setText(jTextAreaRehashing.getText() +
"Hash occured more than once: " + hashes.get(j) + "\n\r");
}
}
}
}
【问题讨论】:
-
我们不是代码编写工厂。尝试一些东西。如果某个特定部分不起作用,并且您尽可能详细地说明原因,我们将为您提供帮助
-
亲爱的 Sotirios,你好。我完全同意你的看法,请在上面找到我更新的问题。感谢您提供任何帮助。
-
我意识到我没有从 'String input = jTextAreaRehashing.getText();' 获取文本作为输入并通过替换'String input = jTextFieldHasCodeInput.getText();'来修复它但结果是一样的。应用程序什么也没做。