【问题标题】:SHA256 in C# on Windows vs. openssl on unixWindows 上 C# 中的 SHA256 与 unix 上的 openssl
【发布时间】:2016-10-24 17:22:17
【问题描述】:

我在 unix 上使用以下内容计算哈希:

echo -n "Test123" | openssl dgst -binary -sha256 | openssl base64

这给出了:

9JKwVu6ULKgdcQq8I2QugjqDhkvHgiqq8bsBtM7PNGc=

我有以下 C# 代码:

string enc;
using(SHA256Managed sha = new SHA256Managed())
{
    enc = Convert.ToBase64String(sha.ComputeHash(Encoding.UTF8.GetBytes("Test123")));
}

这给出了:

2bX1jws4GYKTIxhIoUB09Z66PoJZQ+y+hq5R8dnx9I4=

我不明白为什么这些不相同?

【问题讨论】:

  • 这有点令人困惑。你的标题是“SHA512”,但你的例子似乎是针对 SHA256 的。您的输出似乎也是一个 32 字节的哈希值。
  • @totalfreakingnoob 抱歉标题中的错字
  • 无论摘要输出大小如何,问题都是一样的
  • 对我来说,这两个语句都产生 2bX1jws4GYKTIxhIoUB09Z66PoJZQ+y+hq5R8dnx9I4=。
  • 我在各种平台和架构(包括 AIX)上尝试了多个 OpenSSL 版本(0.9.8、1.0.1、1.0.2) >) 并产生相同的结果。 AIX 框上的openssl version -a 输出是什么?

标签: c# unix openssl sha256


【解决方案1】:

我知道这一定很愚蠢,而且确实如此。在有问题的盒子上,我以root 登录,所以我使用的是 K-shell。从那里它不会像从 C-shell 一样处理 echo -n。把这个留在这里,因为我可能会在五年后再次遇到这个问题:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-15
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 2020-02-25
    相关资源
    最近更新 更多