【问题标题】:Hash different data into SHA 256 - same results将不同的数据散列到 SHA 256 - 结果相同
【发布时间】:2017-09-23 07:13:30
【问题描述】:

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

【问题讨论】:

  • 哦,对不起,我忘了这是一个数组。
  • 我澄清了问题
  • 我不明白为什么它是这个特定问题的重复。问题似乎是为什么不同数据的 SHA-256 值相同。答案是 SHA-256 只依赖于数据内容,R_ID 和 C_ID 是相等的。顺便说一句,第二个示例包含拼写错误:d_c2 应该是 d_b2。
  • 确实,在这个问题中打印数组没有任何问题。
  • 谢谢乔纳森

标签: java hash java-8 sha


【解决方案1】:

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

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

完全相同的事情做了两次。我想这不是你想要的。

【讨论】:

    猜你喜欢
    • 2016-03-29
    • 2016-08-03
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 2018-07-14
    • 2020-12-06
    相关资源
    最近更新 更多