哈希 md5 结果不变
hash md5 result not changing
我的 android 应用程序是校验和哈希 md5。一切看起来都正常,但每次我单击 "generate md5" 按钮时,哈希值都没有改变。生成的散列看起来像一个 "empty" 字符 (d41d8cd98f00b204e9800998ecf8427e)。这是我的代码。感谢您的帮助。
package com.example.kalkulator;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
private static final String TAG = "MD5";
//private TextView textView_hasil;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1 = (Button)findViewById(R.id.button1);
Button button2 = (Button)findViewById(R.id.button2);
final EditText editText1 = (EditText)findViewById(R.id.editText1);
final TextView textView3 = (TextView)findViewById(R.id.textView3);
final String EditText1 = editText1.getText().toString();
button1.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
hitungMD5(EditText1);
}
private void hitungMD5(String editText1) {
// TODO Auto-generated method stub
try
{
MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
digest.update(editText1.getBytes());
byte messageDigest[] = digest.digest();
StringBuffer MD5Hash = new StringBuffer();
for(int i = 0; i < messageDigest.length; i++)
{
String h = Integer.toHexString(0xFF & messageDigest[i]);
while(h.length() < 2)
h = "0" + h;
MD5Hash.append(h);
}
textView3.setText("Hash Anda: " + MD5Hash);
}
catch(NoSuchAlgorithmException e)
{
e.printStackTrace();
}
}
});
button2.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
editText1.setText("");
textView3.setText("");
}
});
}
您可能希望在每次单击按钮时更新传递给 hitungMD5
的字符串。而不是
hitungMD5(EditText1);
使用
hitungMD5(editText1.getText().toString());
这将在您按下按钮时 hitungMD5
传送 editText1
的实际内容
您正在 onClick(View v)
中使用变量 EditText1
,但您从未更新它。您需要将 editText1.getText()
移动到 onClick(View v)
:
button1.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
String text = editText1.getText().toString();
hitungMD5(text);
}
我的 android 应用程序是校验和哈希 md5。一切看起来都正常,但每次我单击 "generate md5" 按钮时,哈希值都没有改变。生成的散列看起来像一个 "empty" 字符 (d41d8cd98f00b204e9800998ecf8427e)。这是我的代码。感谢您的帮助。
package com.example.kalkulator;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
private static final String TAG = "MD5";
//private TextView textView_hasil;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1 = (Button)findViewById(R.id.button1);
Button button2 = (Button)findViewById(R.id.button2);
final EditText editText1 = (EditText)findViewById(R.id.editText1);
final TextView textView3 = (TextView)findViewById(R.id.textView3);
final String EditText1 = editText1.getText().toString();
button1.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
hitungMD5(EditText1);
}
private void hitungMD5(String editText1) {
// TODO Auto-generated method stub
try
{
MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
digest.update(editText1.getBytes());
byte messageDigest[] = digest.digest();
StringBuffer MD5Hash = new StringBuffer();
for(int i = 0; i < messageDigest.length; i++)
{
String h = Integer.toHexString(0xFF & messageDigest[i]);
while(h.length() < 2)
h = "0" + h;
MD5Hash.append(h);
}
textView3.setText("Hash Anda: " + MD5Hash);
}
catch(NoSuchAlgorithmException e)
{
e.printStackTrace();
}
}
});
button2.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
editText1.setText("");
textView3.setText("");
}
});
}
您可能希望在每次单击按钮时更新传递给 hitungMD5
的字符串。而不是
hitungMD5(EditText1);
使用
hitungMD5(editText1.getText().toString());
这将在您按下按钮时 hitungMD5
传送 editText1
的实际内容
您正在 onClick(View v)
中使用变量 EditText1
,但您从未更新它。您需要将 editText1.getText()
移动到 onClick(View v)
:
button1.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
String text = editText1.getText().toString();
hitungMD5(text);
}