golang та же строка представления sha1, но получены разные байтовые фрагменты - PullRequest
0 голосов
/ 27 апреля 2020

Я схожу с ума здесь .. вот пример забавного теста c

https://play.golang.org/p/CZO3rH2EErT

package main

import (
    "fmt"
)

func main() {
    sha1slice := []byte{165, 75, 200, 121, 106, 64, 196, 203, 143, 25, 88, 22, 63, 8, 234, 244, 174, 211, 98, 152}
    sha1Str := string(sha1slice)

    sigStr := "�K�yj@�ˏX?����b�"
    sigSlice := []byte(sigStr)

    fmt.Println("sha1 data:")
    fmt.Println(sha1slice)
    fmt.Println(sha1Str)
    fmt.Println("sig Data:")
    fmt.Println(sigStr)
    fmt.Println(sigSlice)
}

здесь вывод

sha1 data:
[165 75 200 121 106 64 196 203 143 25 88 22 63 8 234 244 174 211 98 152]
�K�yj@�ˏX?����b�
sig Data:
�K�yj@�ˏX?����b�
[239 191 189 75 239 191 189 121 106 64 239 191 189 203 143 25 88 22 63 8 239 191 189 239 191 189 239 191 189 239 191 189 98 239 191 189]

история в том, что я вычисляю sha1 га sh, который производит массив байтов sha1slice 20 байтов.

оригинальная подпись дается мне как строка во время ввода , теперь я знаю, что sha1 правильный, и он действительно выдает ту же строку, но проверяет байтовый массив исходной сигнатуры, и он не совпадает с байтовым массивом sha1.

Я теряю его .. как получается у одного и того же строкового представления есть разные представления байтового массива в этом коде?

есть ли какой-то отсутствующий параметр кодирования, который установлен в строке? как go справляется с этим?

...