将不同的数据哈希到SHA 256中 - 结果相同

时间:2017-09-22 14:41:37

标签: java hash java-8 sha

现有的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,-55,110,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]

1 个答案:

答案 0 :(得分: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()));

两次完全相同。我认为这不是你想要的。