首页 > 解决方案 > 从 Java 中的浮点值接收与 php 中相同的 sha256 的问题

问题描述

我在 Java 中创建与 PHP 相同的哈希 (SHA256) 时遇到问题。

这个 PHP 函数

<?php
echo hash('sha256', 1.00);

返回哈希

6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b

http://sandbox.onlinephpfunctions.com/code/cc5ed1eb8b72e8e18774c39404f9be84be00e551

我的目标是在 Java 中接收相同的哈希,但是当我尝试通过

org.apache.commons.codec.digest.DigestUtils.sha256Hex()

我总是收到与 PHP 不同的值。我试图通过将 Double、BigDecimal 或标准浮点数转换为字节数组,而不是尝试对其进行散列。但这无济于事。我该做什么?

标签: javaphphashsha256

解决方案


php 实际上并没有散列浮点值,而是将其转换为单字节字符串“1”。只需在此在线工具中输入 1即可亲自查看。

在 Java 中,您会得到相同的结果:

MessageDigest.getInstance("SHA-256").digest(new byte[]{(byte) '1'});

推荐阅读