cryptojs и golang дают разные значения хэша sha3 - PullRequest
0 голосов
/ 06 октября 2019

Я пытаюсь сгенерировать хеш sha3-512 в JS и проверить его на сервере golang. Однако cryptoJS создает хэши, отличные от golang.

CryptoJS:

CryptoJS.algo.SHA3.create().update("foo").finalize().toString(CryptoJS.enc.Hex)

Вывод:

1597842aac52bc9d13fe249d808afbf44da13524759477404c3592ee331173e89fe1cbf21a7e4360990d565fad4643cdb209d80fa41a91dea97e665022c92135


Golang:

hex.EncodeToString(crypto.SHA3_512.New().Sum([]byte("foo")))

Вывод:

666f6fa69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26

Я ожидаю, что эти хэши будут равны, но они не

Ответы [ 2 ]

2 голосов
/ 07 октября 2019

Очевидно, что ваш вывод имеет ширину 134, которая должна быть 128-шириной.

Давайте расшифруем ваш вывод:

bytes, _ := hex.DecodeString("666f6fa69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26")
fmt.Printf("%s\n", bytes)

Мы обнаружили, что вывод равен foo��s̢:��ȵg�Zun�ɂO�XY����G\���:���L��@,:�X������u��(�&.

это означает, что вы на самом деле являетесь для вывода:

1010 * "Foo" + SHA-3 ( "") 1012 * где sha3_512 ( "") является "a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26" из примероввариантов SHA-3 .
2 голосов
/ 07 октября 2019

Я не знаю, чей пакет sha3 вы используете. Вот что я получаю с этим кодом :

package main

import (
    "fmt"
    "golang.org/x/crypto/sha3"
)

func main() {
    h := sha3.New512()
    h.Write([]byte("foo"))
    sum := h.Sum(nil)
    fmt.Printf("hash = %x\n", sum)
}

hash = 4bca2b137edc580fe50a88983ef860ebaca36c857b1f492839d6d7392452a63c82cbebc68e3b70a2a1480b4bb5d437a7cba6ecf9d89f9ff3ccd14cd6146ea7e7

Сравните с Python3:

>>> import hashlib
>>> print(hashlib.sha3_512(b"foo").hexdigest())

, который печатает:

4bca2b137edc580fe50a88983ef860ebaca36c857b1f492839d6d7392452a63c82cbebc68e3b70a2a1480b4bb5d437a7cba6ecf9d89f9ff3ccd14cd6146ea7e7

...