2017-09-16 9 views
-2

私はgo SHA3-256機能foは奇妙な結果に直面しています:ここ はsource codeGo lang SHA3-256が無効な出力を出しますか?

import (
    "golang.org/x/crypto/sha3" 
    "encoding/hex" 
) 

func main() { 
    pub, _ := hex.DecodeString("c342dbf7cdd3096c4c3910c511a57049e62847dd5030c7e644bc855acc1fd626") 
    h := sha3.Sum256(pub[:]) 
    fmt.Printf("SHA3 %x\n", h) 
    // expected: b32562e67d3ea44ba1367ce134caac49fd305b24cde6716ad3857ac682576379 
    // received: 8a3ccc097f854811f4c49346da9c3bd1745d087ed539fa7817960f3e0ed8a44f 
} 

である私は、オンラインコンバータのカップルに結果を検証し、彼らはすべての鉱山から異なる同じ結果を与えます。

+0

質問がありますか?また、あなたの質問は自己完結してください。 –

+0

'sha3.Sum256([]バイト(" c342dbf7cdd3096c4c3910c511a57049e62847dd 5030c7e644bc855acc1f d626 "))'の結果を出力し、同じ "間違った"結果が表示されます – JimB

答えて

3

テストしたオンラインコンバータでは、16進数のデコードが実行されていると仮定しています。彼らはしません。文字列のASCII/UTF-8 /任意の値をとり、それを使用します。つまり、テキストをハッシュします。

これは、c342...文字列を入力してhelloと入力すると簡単に確認できます。両方とも動作しますが、helloは明らかに16進数を含みません。別の方法は、cではなく、大文字のCで始まることです。これは、別の結果も返しますが、16進数のデコードでは同じバイト配列が返され、ハッシュが返されます。ほとんどすべてではないが、オンラインのツールは基本的にアマチュアの暗号によって、趣味のプロジェクトであることを

8a3ccc097f854811f4c49346da9c3bd1745d087ed539fa7817960f3e0ed8a44f 

注:

と小さなJavaアプリケーションは、実際のあなたの価値を確認しません実装でのあらゆる種類のエンコード/デコードの問題、エラー、不確実性があることを期待してください。実装をテストする場合は、公式のNISTテストベクタを使用してください。

+0

ありがとう@Maarten Bodewes、 – Constantine

関連する問題