c++ - OpenSSL 1.0.2h 在不同的 Windows 版本上给出不同的 SHA256 值?
问题描述
这怎么可能?我写了一个非常简单的测试来演示它:
vector<char> hash(SHA256_DIGEST_LENGTH);
SHA256_CTX sha256;
SHA256_Init(&sha256);
SHA256_Update(&sha256, "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", strlen("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"));
SHA256_Final(reinterpret_cast<unsigned char *>(hash.data()), &sha256);
在 Windows 7 x64 上,哈希值为cf5b16a7 78af8380 036ce59e 7b049237 0b249b11 e8f07a51 afac4503 7afee9d1
. 这是正确的。在 Windows 10 x64 Corporate 上,哈希值是23d7f2dc 23d7f2dc e9af6f64 e9af6f64 5542bb78 23d7f2dc e8e3a3d6 e9af6f64
!!! 为什么 OpenSSL 在 Windows 10 上给出不同(和错误)的哈希版本?
解决方案
推荐阅读
- java - Spring boot application not starting on Tomcat
- java - getResourceAsStream 返回具有正确路径的 null
- reactjs - 如何检查数组是否具有相同的对象 React Native
- c - sprintf_s 和访问冲突
- java - 片段中的回收站视图。Activity 关闭后不更新
- ruby-on-rails - Rails 嵌套表单复选框字段未保存到我的数据库模型
- chart.js - chart.js 如何绘制箭头而不是条
- django - 如何使用 rest_framework_json_api 在 Django 中创建我自己的端点?
- node.js - 是否有任何替代此错误的方法 - 声明类型既不是“void”也不是“any”的函数必须返回一个值?
- javascript - 获取 HTML 元素的 name 属性并将其发送到服务器