2012-12-27 8 views
1

나는 그것을 짧고 간단하게 유지할 것이다! 나는 C#을 배우고 있는데, 새 SHA-3 Keccak 알고리즘을 위해 작동하는 HashLib 라이브러리 @https://hashlib.codeplex.com/을 얻으려고합니다. 아마도 올바른 해시 코드를 출력해야하는 간단한 Console/Win32 응용 프로그램을 작성했지만 그렇지 않습니다!SHA-3의 간단한 구현 Keccak가 C#의 잘못된 출력을 해싱합니까?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 
using System.Diagnostics; 
using HashLib; 
using System.Threading.Tasks; 

namespace ConsoleApplication5 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      { 
       string passPhrase = ""; 
       IHash hash = HashFactory.Crypto.SHA3.CreateKeccak512(); 
       HashResult r = hash.ComputeString(passPhrase, System.Text.Encoding.ASCII); 

       Console.WriteLine(r.ToString().ToLower().Replace("-","")); 
       Console.WriteLine("{0}, {1}, {2}", hash.BlockSize, hash.HashSize, hash.Name); 
       Console.ReadLine(); 
      } 
     } 
    } 
} 

응용 프로그램이 제대로 빌드되고 실행되지만 출력이 잘못되었습니다. 다른 사람들의 Keccak 알고리즘 구현을 사용할 때, 나는 다른 결과를 얻었고, 예를 들어이 위키 포스트와도 일치하지 않습니다. https://en.wikipedia.org/wiki/SHA-3 그래서 뭔가 잘못되었습니다. "df987cfd23fbc92e7e87faaca300ec3f 등 등"나는 예에 따라, 빈 텍스트를 떠날 때

, 나는 다음과 같은 수 위키 및 기타 도구는 내가 완전히 다른 무언가

"0eab42de4c3ceb9235fc91acffe746b29c29a8c366b7c60e4e67c466f36a4304c00fa9caf9d87976ba469bcbe06713b435f091ef2769fb160cdab33d3670680e"

을 얻을해야한다고하면서. 물론 비어 있지 않은 문자열로 시도해 봤습니다.

누구에게 의견이 있습니까?

+1

는 구현 중 하나 수표 값이 잘못된 것 같습니다. SHA-3라는 이름을 붙였을 때 IV를 변경하여 Keccak과 다르게 해시 할 수 있습니다. –

+0

당신이 점점 값이 SHA-3 것처럼 -256뿐만 아니라 내가 개인적으로 HashLib를 업데이트하고 최신 버전 – MethodMan

+0

다윗을 얻을 것이라고 본다, 나는 최신 코드 (변경 집합 78295)이 문제가 해결되지 않는 말을 죄송합니다. 다음 코드를 사용할 때 IHash hash = HashFactory.Crypto.SHA3.CreateKeccak512(); HashResult res = hash.ComputeString ("", System.Text.Encoding.ASCII); 문자열 dd = res.ToString(); 내 VS 2012 IDE에서 DF987CFD-23FBC92E-7E87FAAC-A300EC3F-AA1DBADC-678E8EE9-4A830968-F22D9209-64AB402D-C5D0F7B2-0C9644BE-08056555-C789D295-8BDA3DF9-8C94BACC-EA25D3C1과 같은 결과가 나타납니다. 지정된 문제와 동일합니다. 나는 알고리즘 변경을했을 때, 당신은 명확하게 시겠어요 파일 – Bepenfriends

답변

6

는 HashLib의 버전이 너무 오래되었습니다. recent changes을 보면 테스트 벡터가 얻은 코드에서 얻은 코드로 바뀌 었음을 알 수 있습니다. (이 알고리즘은. 물론,뿐만 아니라 변경)

+0

에서 찍은 테스트 벡터를 사용하는 경우 변경 사항이 올바른 위치인지 확실하지 않다? – joe

+1

Keccak이 SHA-3으로 승인되면 알고리즘이 변경되었습니다. –