如何在我的应用程序中散列密码

时间:2017-07-24 11:39:23

标签: java android hash

我想在我的应用程序中散列字符串密码,我在线搜索了示例,但我不明白我将如何能够在我的情况下实现,有人可以告诉我一个如何正确实施的示例哈希与我的代码。谢谢

  package ie.example.artur.adminapp;

    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.support.design.widget.FloatingActionButton;
    import android.support.design.widget.Snackbar;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.View;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.Statement;

    public class MainActivity extends AppCompatActivity {


        EditText editTextName,editTextEmail,editTextPassword;
        TextView textView;
        private static final String DB_URL = "jdbc:mysql://10.3.2.51/socialmedia_website";
        private static final String USER = "zzz";
        private static final String PASS = "zzz";



        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_register);

            textView = (TextView) findViewById(R.id.textView);
            editTextName = (EditText) findViewById(R.id.editTextName);
            editTextEmail = (EditText) findViewById(R.id.editTextEmail);
            editTextPassword = (EditText) findViewById(R.id.editTextPassword);

            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);

            FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                            .setAction("Action", null).show();
                }
            });
        }

        public void btnConn(View view) {
            Send objSend = new Send();
            objSend.execute("");


        }

        private class Send extends AsyncTask<String, String, String>

        {
            String msg = "";
            String name = editTextName.getText().toString();
            String email = editTextEmail.getText().toString();
            String password = editTextPassword.getText().toString();

            @Override
            protected void onPreExecute() {
                textView.setText("Please Wait Inserting Data");
            }

            @Override
            protected String doInBackground(String... strings) {
                try {
                    Class.forName("com.mysql.jdbc.Driver");
                    Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
                    if (conn == null) {
                        msg = "Connection goes wrong";
                    } else {
                        String query = "Insert INTO users (name,email,password) VALUES('" + name+"','"+email+"','"+password+"')";
                        Statement stmt = conn.createStatement();
                        stmt.executeUpdate(query);
                        msg = "Inserting Successful!!";

                    }

                    conn.close();

            }

            catch(
            Exception e
            )

            {
                msg = "Connection goes Wrong";
                e.printStackTrace();

            }

            return msg;


        }



    @Override
        protected void onPostExecute(String msg) {textView.setText(msg);}



        }

}

1 个答案:

答案 0 :(得分:4)

好的,好的。根据评论中的讨论。因此,在您的类中,将密码作为输入,您必须实现此方法。

所以你要做的就是在你自己的课堂上实现答案方法。因此,在您的课程中添加以下方法 -

public String md5(String s) {
try {
    // Create MD5 Hash
    MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
    digest.update(s.getBytes());
    byte messageDigest[] = digest.digest();

    // Create Hex String
    StringBuffer hexString = new StringBuffer();
    for (int i=0; i<messageDigest.length; i++)
        hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
    return hexString.toString();

} catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
}
return "";
}

现在,您正在执行Async任务 -

 String password = editTextPassword.getText().toString();

而是将此值传递给md5方法,并将散列代码作为密码。

String password = md5(editTextPassword.getText().toString());