哈希 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);
    }