Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Hasing è password con jBCrypt

    ciao!

    sto cercando di simulare il login, e devo confrontare l'hash (in teoria) salvato sul db con quello inviato dall'uitente.

    ho fatto una prova banale:
    codice:
    private String testPwd = BCrypt.hashpw("123456789", BCrypt.gensalt(12));
    
    public void doLogin(View view) {
        String passwordTxt = password.getText().toString();
        String hashed = BCrypt.hashpw(passwordTxt, BCrypt.gensalt(12));
    
        Log.i("PWD", passwordTxt);
        if (BCrypt.checkpw(passwordTxt, hashed)) {
            Log.i("OK", "OK");
        } else {
            Log.i("KO", "KO");
        }
    }
    il problema è che mi esce OK qualsiasi cosa scriva nella casella di testo.
    probabilmente non sto capendo io come usare la libreria.
    qualcuno ha un suggerimento??

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,130
    Beh... stai confrontando sempre la password letta dalla casella di testo con il suo hash (sarà sempre vero!).
    Fose volevi confrontarlo con testPwd e non con hashed (che tra l'altro non ti dovrebbe servire di calcolare).

    codice:
    if ( BCrypt.checkpw(passwordTxt, testPwd) ) {

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Quote Originariamente inviata da fermat Visualizza il messaggio
    sto cercando di simulare il login, e devo confrontare l'hash (in teoria) salvato sul db con quello inviato dall'uitente.

    il problema è che mi esce OK qualsiasi cosa scriva nella casella di testo.
    probabilmente non sto capendo io come usare la libreria.
    qualcuno ha un suggerimento??
    Il bcrypt genera sempre ogni volta un hash differente, anche a fronte della stessa pw in chiaro. Funziona così.
    Il punto è che solo l'algoritmo del bcrypt "sa" come confrontare (il modo lui ce l'ha) una password "in chiaro" con un hash pre-generato (NON si possono banalmente confrontare 2 hash!).

    Questo in sostanza vuol dire che:
    - BCrypt.hashpw lo devi usare solo quando generi l'utenza es. su DB, cioè quando scrivi il record con dentro l'hash della password (o se si aggiorna la password). Poi hashpw non lo devi più usare per questa utenza.
    - BCrypt.checkpw lo devi usare solo quando vuoi autenticare una password, passando la password in chiaro inserita dall'utente e l'hash che hai tirato su dal record utente.
    AndreaSenior Java developerSCJP 5 (91%) – SCWCD 5 (94%)
    Il mio nuovo sito-blog italiano sulla programmazione: andbin.it

  4. #4
    scusate, sono fuso io.
    facevo un confronto sbagliato.
    questo sembra funzionare.
    solo per fare dei test di login senza avere le API remote.
    poi sarà da modificare.


    codice:
    private String testPwd = BCrypt.hashpw("123456789", BCrypt.gensalt(12));
    
    public void doLogin(View view) {
        String rfidTxt = rfid.getText().toString();
        String usernameTxt = username.getText().toString();
        String passwordTxt = password.getText().toString();
    
        if (TextUtils.isEmpty(rfidTxt) || TextUtils.isEmpty(usernameTxt) || TextUtils.isEmpty(passwordTxt)) {
            GenericToast.viewToast(getApplicationContext(), "Tutti i campi sono obbligatori", Toast.LENGTH_LONG, Gravity.CENTER);
        } else {
            if (usernameTxt.equals("email@email.com") && BCrypt.checkpw(passwordTxt, testPwd) && rfidTxt.equals("12345")) {
                Intent intent = new Intent(this, HomeActivity.class);
                startActivity(intent);
            } else {
                GenericToast.viewToast(getApplicationContext(), "Username, password o rfid errati!", Toast.LENGTH_LONG, Gravity.CENTER);
            }
        }
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.