【问题标题】:Is the C# encryption library hashlib correct in it's implementationC# 加密库 hashlib 的实现是否正确
【发布时间】:2013-06-04 13:42:33
【问题描述】:

Hashlib 团队,

我不确定 SHA3 库 (Keccak) 是否返回正确的加密。我使用了从 codeplex 下载的最新源代码(变更集 78295),但它与维基百科(sha3 页面)中提供的向量和结果不匹配

当我使用以下代码时

IHash hash = HashFactory.Crypto.SHA3.CreateKeccak512();
HashResult res = hash.ComputeString("", System.Text.Encoding.ASCII);
string dd = res.ToString();

在我的 VS 2012 IDE 中,我得到的结果是

DF987CFD-23FBC92E-7E87FAAC-A300EC3F-AA1DBADC-678E8EE9-4A830968-F22D9209-64AB402D-C5D0F7B2-0C9644BE-08056555-C789D295-8BDA3DF9-8C94BACC-EA25D3C1

这实际上应该返回:

0eab42de4c3ceb9235fc91acffe746b29c29a8c366b7c60e4e67c466f36a4304c00fa9caf9d87976ba469bcbe06713b435f091ef2769fb160cdab33d3670680e

根据以下帖子Simple implementation of SHA-3 Keccak hashing to the wrong output in C#?David 回答说最新的代码库应该返回正确的结果。我不确定更改是否到位。

当我使用取自文件 ExtremelyLongMsgKAT_512.txt 的测试向量时

abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno

并使用代码

hash.ComputeString("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno").ToString();

结果也与预期不同。测试向量文件说结果是:

3E122EDAF37398231CFACA4C7C216C9D66D5B899EC1D7AC617C40C7261906A45FC01617A021E5DA3BD8D4182695B5CB785A28237CBB167590E34718E56D8AAB8

然而,实际结果却是

"B9942109-EB762527-FB384E14-7EDA2DAA-71CA782F-4819B53E-E13C1C13-1C572D99-2B387FA7-212FF624-6EED988D-31AFB23B-4D1B7C44-BC38F908-46EE25F4-AABD5920"

【问题讨论】:

    标签: c# hashlib keccak sha-3


    【解决方案1】:

    虽然我不能代表 Hashlib,但 ExtremelyLongMsgKAT_512.txt 声明输入应重复 16777216 次。在我的端口https://bitbucket.org/jdluzen/sha3 中,我包含了大部分内置测试,包括极长的测试。

    【讨论】:

    • 是的,经过多次重复后,我得到的哈希值显示正确。但问题是它运行了大约 3 个小时才能完成
    • 好久不见!我在发布模式下运行,带有调试器,在 i5 上大约需要一分钟。是不是有别的事情发生了?
    • 你能分享你使用的代码 sn-p tat,可能是我的循环/重复可能做错了。我也在 AMD 上
    • 当然,here it is in the test app。我只是不断地传入同一个字节[]。
    猜你喜欢
    • 2020-05-13
    • 2011-03-21
    • 1970-01-01
    • 2017-10-14
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多