Sto provando a generare un hash SHA256 in Android, che poi passo a un servizio Web API Web ASP.NET e confrontare l'hash lì. Come tale, ho bisogno di costruire un hash in Android, che dato gli stessi input in ASP.NET genererà un hash equivalente. Mi sto tirando i capelli cercando di capire cosa sto facendo male.Calcola hash SHA256 in Android/Java e C#
Ecco il codice di Android:
public String computeHash(String input) throws NoSuchAlgorithmException{
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.reset();
try{
digest.update(input.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e){
e.printStackTrace();
}
byte[] byteData = digest.digest(input.getBytes());
StringBuffer sb = new StringBuffer();
for (int i = 0; i < byteData.length; i++){
sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
}
return sb.toString();
}
Ed ecco il codice sul server (C#):
private static string ComputeHash(string input, HashAlgorithm algorithm)
{
Byte[] inputBytes = Encoding.UTF8.GetBytes(input);
Byte[] hashedBytes = algorithm.ComputeHash(inputBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashedBytes.Length; i++)
{
sb.Append(String.Format("{0:x2}", hashedBytes[i]));
}
return sb.ToString();
}
UPDATE: Ecco l'implementazione di Android/Java corretto (grazie Nikolay Elenkov):
public String computeHash(String input) throws NoSuchAlgorithmException, UnsupportedEncodingException{
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.reset();
byte[] byteData = digest.digest(input.getBytes("UTF-8"));
StringBuffer sb = new StringBuffer();
for (int i = 0; i < byteData.length; i++){
sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
}
return sb.toString();
}
Non posso credere quanto tempo mi avete salvato oggi. Grazie per aver pubblicato l'aggiornamento. –
Come posso convertire la stringa hash in input originale in java. qualsiasi idea grazie –
Un hash crytpographic è a senso unico ... si prega di consultare il seguente articolo: http://en.wikipedia.org/wiki/Cryptographic_hash_function – Kevin