2017-09-22 106 views
-1

现有的SHA-256,如何与另一个或多个更新不同的数据类型哈希不同的数据到SHA 256 - 相同的结果

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())); 

的结果相同: 结果与更新sha_c.update(C_ID.getBytes());

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

结果与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

哦,对不起,我忘了它是一个数组。 – sherif

+0

我澄清了问题 – sherif

+1

我不明白为什么它是这个特定问题的重复。这个问题似乎是为什么SHA-256值对于不同的数据是相同的。答案是SHA-256完全依赖于数据内容,而R_ID和C_ID是相等的。 顺便说一句,第二个例子包含错别字:d_c2应该是d_b2。 –

回答

0

你得到了同样的结果,因为你做了两次完全相同的事情。

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

R_IDC_ID包含相同的值,所以

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())); 

是做两次同样的事情。我认为这不是你想要的。

相关问题