Ho bisogno del tuo aiuto. I miei Java e Python script non ottenere l'ame SHA-1 il valore di una stringa:Java e python non ottengono lo stesso valore di sha-1
hash.py
# -*- coding: utf-8 -*-
import hashlib
username = raw_input('username:')
timestamp = raw_input('timestamp:')
app_id = 'dad'
secret_key = 'dadda'
print 'The hashed string is: ' , hashlib.sha1(username + timestamp + app_id + secret_key).hexdigest()
hash.java
public static String generateSHA1(String password)
{
String sha1 = "";
try
{
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
crypt.reset();
crypt.update(password.getBytes("UTF-8"));
sha1 = byteToHex(crypt.digest());
}
catch(Exception e)
{
e.printStackTrace();
}
return sha1;
}
private static String byteToHex(final byte[] hash)
{
Formatter formatter = new Formatter();
for (byte b : hash)
{
formatter.format("%02x", b);
}
String result = formatter.toString();
formatter.close();
return result;
}
UPDATE: Supponendo che la password sia già concatenata: uso rname, timestamp, app_id e secret_key
C'è qualcosa che mi è mancato? Penso che ci sia qualcosa di sbagliato nel mio codice java re. UTF-8 che emette questo: \ xe2 \ x80 \ x8b ma non riuscivo a capirlo. Qualsiasi aiuto sarà apprezzato. Grazie.
Questo comportamento si verifica per tutti i valori del nome utente/timestamp? Puoi pubblicare una coppia campione/timestamp di esempio che stai provando? –
@ SanjayT.Sharma nome utente: [email protected] data/ora: 1447943648 –
Non riesco a riprodurre il problema qui; Ottengo lo stesso valore di hash 'eeae0d665ed71f3d8f4e3d344fda1c3735dc46c0' per entrambi usando i tuoi input campione. –