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

标签 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);}



        }

}

最佳答案

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

所以你要做的就是在你的类本身中实现answer方法。因此,在您的类中添加以下方法 -

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 "";
}

现在在您的异步任务中您正在执行此操作 -

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

而是将此值传递给您的 md5 方法并获取哈希代码作为密码。

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

关于java - 如何在我的应用程序中散列密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45279676/

相关文章:

C 中的 Const 表达式 - 如何散列字符串?

Java程序流程

javascript - android textview 中带有 &lt;style&gt; 标签和样式的 Html 字符串

java - 什么?android :attr/listPreferredItemHeight is doing and how?

android - 从哪里开始 : Creating a PDF in my Android application

algorithm - 数学组合的完美最小散列

java - 在 Android 应用程序中命名包的正确技术是什么?

java - 调用Action Bar导致错误

java - ''intent.getExtras().getString' ' 重新打开时应用程序崩溃

hash - 如何在 Redis Hash 上执行搜索?