java - 从 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 或标准浮点数转换为字节数组,而不是尝试对其进行散列。但这无济于事。我该做什么?
解决方案
php 实际上并没有散列浮点值,而是将其转换为单字节字符串“1”。只需在此在线工具中输入 1即可亲自查看。
在 Java 中,您会得到相同的结果:
MessageDigest.getInstance("SHA-256").digest(new byte[]{(byte) '1'});
推荐阅读
- javascript - discord.js 上的 ExtendedMessage 是什么
- mysql - MYSQL:如何从一列到多列中选择多个值?
- api - 为什么会发布请求连接但获取不会?
- php - 我如何使用 curl 获取此网址
- python - 根据条件拆分系列/数据框
- c++ - 我可以编写使用 keypress(或 keydown)事件的独立于操作系统的代码吗?
- reactjs - react-player:有没有办法用自定义控件改变视频分辨率?
- rtf - 如何在 BIP 的 RTF 模板中添加日期字段
- java - 如何编辑Maven编译的目标文件夹中的文件
- javascript - VS Code - 如何在另一个文件中使用的某些对象上使用“代码完成”