English
Instant Developer Foundation Documentazione
  • Reference Librerie
  • Librerie Componenti
  • Simple Crypter

Hash With Salt

funzione copia link

Scopo

Questa funzione statica genera un Hash di una stringa utilizzando un Salt. Tale funzione è più sicura di una semplice funzione di cifratura come, per esempio, la funzione MD5. La funzione MD5 infatti, a parità di testo genera sempre lo stesso output. Pertanto la funzione MD5("PIPPO") fornisce sempre il valore "0c88028bf3aa6a6a143ed846f2be1ea4". Ora se un malintenzionato trovasse tale valore su un database rubato potrebbe risalire alla password PIPPO. La funzione HashWithSalt, invece, permette di aumentare la sicurezza del testo trattandolo prima mediante un altro testo chiamato Salt. In questo modo il risultato dell'HASH non sarà più lo stesso per il valore "PIPPO" ma dipenderà dalla coppia "PIPPO", [SALT].

Sintassi

String sPass = SimpleCrypter.HashWithSalt(Text, Salt)

Argomenti

Text E' la stringa di cui occorre calcolare l'HASH
Salt E' la stringa che viene utilizzata dalla funzione per rendere impossibile risalire al testo originale guardando il risultato della stessa

Valore di ritorno

Viene ritornata una stringa lunga 64 caratteri che contiene l'hash della stringa passsata come parametro.

Esempio di codice

// *********************************************************************
// Check user credentials and set userRole if everything is fine
// *********************************************************************

private void MyWebApp.CheckLogin(
  string UserName // 
  string Password // 
)
{
  // Use only UserName to retrieve HASHED password and SALT from database
  string UserHashedPass = ""
  string UserSalt = ""
  select into variables (found variable)
    set UserHashedPass = Password
    set UserSalt = Salt
  from
    Users // master table
  where
    Username = UserName
  // 
  // If the user does not exist

  if (UserHashedPass == "")
  {
    MyWebApp.setLoginMessage("User not found", [Icon])
    return
  }
  // 
  // Hash the user password with SALT (the password that the used typed into the login form)

  Password = SimpleCrypter.hashWithSalt(Password, UserSalt)
  // 
  // Now, check if HASHED password matches with the one that is on the DB

  if (Password == UserHashedPass)
    MyWebApp.userRole = Administrator
  else
    MyWebApp.setLoginMessage("Invalid credentials", ...)
}
  • La funzione richiede la libreria Chilkat in tecnologia C# e Java. Tale libreria viene automaticamente copiata da Instant Developer durante la compilazione delle applicazioni web online.
  • La funzione è utilizzabile sia in applicazioni web online che in applicazioni offline. In quest'ultimo caso non viene caricata nessuna libreria.
  • E' buona norma cambiare il SALT ogni volta che l'utente cambia la password. Pertanto consigliamo, ogni volta che l'utente cambia la password, di generare un nuovo SALT e utilizzarlo per calcolare il nuovo HASH. Poi salvare il SALT e l'HASH (password) su database.
  • E' possibile calcolare un buon SALT in questo modo:
       String salt = docIDToGuid(newDocID())
    

Ultima modifica: 26/03/2019 / Validità: da 19.0.7400

Vedi anche

  • MD5 (funzione)
  • New Doc ID (funzione)
  • Doc ID To Guid (funzione)

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum