2011-09-28 4 views
0

Я работаю над проектом, в котором пользователь должен сначала войти в приложение, чтобы использовать его. И моя маленькая проблема заключается в том, что когда пользователь вводит свое имя пользователя и пароль, я должен их хэш и отправлять на сервер вместо имени пользователя и пароля, введенных пользователем. Так что сейчас я делаю что-то вроде этого:Android-логин с hashed имя пользователя и пароль

EditText txtUserName = (EditText) findViewById (R.id.username_login_input); 
EditText txtPassword = (EditText) findViewById (R.id.password_login_input); 

HttpClient httpclient; 
HttpPost httppost; 
ArrayList<NameValuePair> postParameters; 
httpclient = new DefaultHttpClient(); 
httppost = new HttpPost("http://www.rpc.shalqlqlq.com"); 

postParameters = new ArrayList<NameValuePair>(); 
postParameters.add(new BasicNameValuePair("username_hash", hashUser(txtUserName.getText().toString(),txtPassword.getText().toString()))); 
postParameters.add(new BasicNameValuePair("password_hash", hashPass(txtUserName.getText().toString(),txtPassword.getText().toString()))); 

httppost.setEntity(new UrlEncodedFormEntity(postParameters)); 
HttpResponse response = httpclient.execute(httppost); 
Log.w("Response ","Status line : "+ response.getStatusLine().toString()); 
byte[] buffer = new byte[1024]; 
buffer = EntityUtils.toString(response.getEntity()).getBytes(); 

public String hashUser(String username, String password) throws NoSuchAlgorithmException, UnsupportedEncodingException{ 
String hashUser = SHA1.Sha1Hash(username); 
    String hashPass = SHA1.Sha1Hash(password); 
    String luser = hashPass+hashUser; 
    String lastUser = SHA1.Sha1Hash(luser); 
    return lastUser; 
} 

public String hashPass(String username, String password) throws NoSuchAlgorithmException, UnsupportedEncodingException{ 
String hashUser = SHA1.Sha1Hash(username); 
    String hashPass = SHA1.Sha1Hash(password); 
    String lpass = hashPass+hashUser;   
    String lastPass = SHA1.Sha1Hash(lpass); 
    return lastPass; 
} 

И все еще говорит мне, что имя пользователя и пароль неверны. Я уверен, что хеширование верное, потому что я уже пробовал. Так может кто-нибудь помочь мне узнать, где моя ошибка?

ответ

0

Если все в порядке, я думаю, может быть, проблема в том, чтобы имя пользователя и пароль от edittext .Try поставить

postParameters.add(new BasicNameValuePair("username_hash", hashUser(txtUserName.getText().toString(),txtPassword.getText().toString()))); 
postParameters.add(new BasicNameValuePair("password_hash", hashPass(txtUserName.getText().toString(),txtPassword.getText().toString()))); 

в некоторых вид события. Я думаю, у вас есть кнопка Login..так вы установите эти параметры на onClick метод, и я думаю, что это сработает.

+0

Он работает! Большое спасибо за помощь! –

1

Для начала, ваш хэшируются имя пользователя и хэшируются пароль идентичны:

не
public String hashUser(String username, String password) throws NoSuchAlgorithmException, UnsupportedEncodingException{ 
    String hashUser = SHA1.Sha1Hash(username); 
    String hashPass = SHA1.Sha1Hash(password); 
    String luser = hashPass+hashUser; // <-- Hashed pass + user 
    String lastUser = SHA1.Sha1Hash(luser); // <-- Hashed a second time 
    return lastUser; 
} 

public String hashPass(String username, String password) throws NoSuchAlgorithmException, UnsupportedEncodingException{ 
    String hashUser = SHA1.Sha1Hash(username); 
    String hashPass = SHA1.Sha1Hash(password); 
    String lpass = hashPass+hashUser; // <-- Hashed pass + user 
    String lastPass = SHA1.Sha1Hash(lpass); // <-- Hashed a second time 
    return lastPass; 
} 

Если сервер хранит имена пользователей и пароли, каждый как хэшированном хэш пароля и имени пользователя, то я предполагаю, что это, где ваш проблема есть.

Почему бы просто не использовать что-то вроде:

postParameters.add(new BasicNameValuePair("username_hash", SHA1.Sha1Hash(txtUserName.getText().toString()))); 
postParameters.add(new BasicNameValuePair("password_hash", SHA1.Sha1Hash(txtPassword.getText().toString()))); 
+0

моя ошибка, имя пользователя и пароль не совпадают, я просто ошибся при копировании и вставке кода здесь. –

Смежные вопросы