2017-09-22 5 views
-1

existants SHA-256, la mise à jour avec un autre ou plusieurs types de données différentesdonnées de hachage différentes dans SHA 256 - mêmes résultats

BigInteger d = new BigInteger("773182302672421767750165305491852205951657281488"); 
    BigInteger r = new BigInteger("1354751385705862203270732046669540660812388894970"); 
    String R_ID = "id_b"; 
    String C_ID = "id_b"; 

    MessageDigest sha_c = MessageDigest.getInstance("SHA-256"); 
    sha_c.update(r.toByteArray()); 
    sha_c.update(d.toByteArray()); 
    sha_c.update(C_ID.getBytes()); 
    System.out.println(Arrays.toString(sha_c.digest())); 

    MessageDigest sha_b = MessageDigest.getInstance("SHA-256"); 
    sha_b.update(r.toByteArray()); 
    sha_b.update(d.toByteArray()); 
    sha_b.update(R_ID.getBytes()); 
    System.out.println(Arrays.toString(sha_b.digest())); 

résultats identiques: résultat avec mise à jour avec sha_c.update(C_ID.getBytes());

[114, -62, 50, -44, -118, 20, -29, 34, -112, 99, -17, -6, 97, -64, -121, 20, 30, -55, 110, 54, 9, -90, 100, 125, -28, 75, 106, -15, -87, -109, -51, 46]

résultat avec la mise à jour avec sha_b.update(R_ID.getBytes());

[114, -62, 50, -44, -118, 20, -29, 34, -112, 99, -17, -6, 97, -64 , -121, 20, 30, -55, 110, 54, 9, -90, 100, 125, -28, 75, 106, -15, -87, -109, -51, 46]

+0

ooh, désolé j'ai oublié c'est un tableau. – sherif

+0

J'ai clarifié la question – sherif

+1

Je ne vois pas pourquoi c'est une copie de cette question particulière. La question semble être pourquoi les valeurs SHA-256 sont les mêmes pour différentes données. La réponse est que SHA-256 dépend uniquement du contenu des données, et R_ID et C_ID sont égaux. BTW, le deuxième exemple contient des fautes de frappe: d_c2 devrait être d_b2. –

Répondre

0

Vous avez obtenu les mêmes résultats parce que vous avez fait exactement la même chose deux fois.

BigInteger d = new BigInteger("773182302672421767750165305491852205951657281488"); 
BigInteger r = new BigInteger("1354751385705862203270732046669540660812388894970"); 
String R_ID = "id_b"; 
String C_ID = "id_b"; 

R_ID et C_ID contiennent la même valeur, donc

MessageDigest sha_c = MessageDigest.getInstance("SHA-256"); 
sha_c.update(r.toByteArray()); 
sha_c.update(d.toByteArray()); 
sha_c.update(C_ID.getBytes()); 
System.out.println(Arrays.toString(sha_c.digest())); 

MessageDigest sha_b = MessageDigest.getInstance("SHA-256"); 
sha_b.update(r.toByteArray()); 
sha_b.update(d.toByteArray()); 
sha_b.update(R_ID.getBytes()); 
System.out.println(Arrays.toString(sha_b.digest())); 

est exactement la même chose fait deux fois. Je suppose que ce n'était pas ce que vous vouliez.