Вход в Android с хэшированным именем пользователя и паролем - PullRequest
0 голосов
/ 28 сентября 2011

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

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

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

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Для начала ваше хешированное имя пользователя и хешированный пароль идентичны:

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 голосов
/ 28 сентября 2011

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

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())));

в какое-то событие.Я полагаю, у вас есть кнопка Войти ... так что вы устанавливаете эти параметры на метод onClick, и я думаю, что это будет работать.

...