2017-07-24 5 views
0

Ich möchte das String-Passwort in meiner App Hash, ich habe nach Beispielen gesucht online, aber ich verstehe nicht, wie ich in meinem Fall implementieren könnte, könnte jemand bitte zeigen mir ein Beispiel, wie man den Hash mit meinem Code richtig implementiert. DankeWie kann ich das Passwort in meiner App 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);} 



     } 

} 
+0

Sie sollten die PASSWORD-Funktion der Datenbank verwenden, und Sie sollten vorbereitete Anweisungen verwenden. – EJP

+0

Welche Art von Hashing Sie betrachten. Und was hast du probiert? Möchten Sie MD5 oder SHA1 Hashing? –

+0

Ihre Frage ist doppelt, dieser Link wird Ihnen helfen. https://stackoverflow.com/questions/3934331/how-to-hash-a-string-in-android –

Antwort

4

Ah ok. Laut Diskussion im Kommentar. In Ihrer Klasse, die das Passwort als Eingabe verwendet, müssen Sie diese Methode implementieren.

Also, was Sie tun müssen, ist die Antwort-Methode in Ihrer Klasse selbst implementieren. So unten Methode in Ihrer Klasse hinzufügen -

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

Jetzt in Ihrer Async Aufgabe, die Sie dies tun -

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

Statt diesen Wert auf Ihre md5 Methode übergeben und den Hash-Code als Passwort.

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

Vielen Dank, hätte nie gedacht, dass es so einfach ist ... Eine kleine Frage, würde SHA1 auf ähnliche Weise gemacht werden? – Lucy

+0

Ja, Sie können das auf die gleiche Weise tun. Nur der Algorithmus wird sich ändern. Siehe unten Link für SHA1 https://stackoverflow.com/questions/5980658/how-to-sha1-hash-a-string-in-android –

+0

Danke nochmal sir! – Lucy

Verwandte Themen