Fastumkruk
Ребята, написал код на го с исползованием sha256, по примеру кода на php. Но почему то ключи не сходятся. Посмотрите пожалуйста, может увидите ошибку. https://play.golang.org/p/XX8734zhzxb
Daniel
Каналы без горутин :)
бессмысленно. и даже вредно. каналы нужны только для взаимодействия между горутинами
Nicholas
kås
key это что?
ну ключ для вычисления hmac
Fastumkruk
ну ключ для вычисления hmac
Не совсем понимаю...
kås
наверное у тебя другая задача, сорри. просто sha256хэш?
Daniel
это пример оправданного event-driven
Fastumkruk
наверное у тебя другая задача, сорри. просто sha256хэш?
Php код котрый есть по ссылке в конце кода, я переписал на go. Но на php получается один ключ, а на go другой.
Daniel
скорее всего - данные разные, только и всего
kås
при конкатенации в строку, проверь
Fastumkruk
kås
вот же у тебя в пхп implode(':', $arHash) а потом ты делаешь в го mas[0] + mas[1] + mas[2] + mas[3] + mas[4] + mas[5]
Fastumkruk
вот же у тебя в пхп implode(':', $arHash) а потом ты делаешь в го mas[0] + mas[1] + mas[2] + mas[3] + mas[4] + mas[5]
Там команда implode, обьединение элементов массива в строку. А на го такая есть?
Alexander
Там команда implode, обьединение элементов массива в строку. А на го такая есть?
да, объединение через *разделитель* - у тебя двоеточее разделитель, а в го - двоеточие между элементами не ставишь
Stanislav
strings.Join
Fastumkruk
да, объединение через *разделитель* - у тебя двоеточее разделитель, а в го - двоеточие между элементами не ставишь
h.Write([]byte(mas[0] + ":" + mas[1] + ":" + mas[2] + ":" + mas[3] + ":" + mas[4] + ":" + mas[5])) Сделал, все равно отличается
Daniel
коллега
Daniel
чего вы от нас хотите?
Fastumkruk
Все ли я правильно делаю исходя от пхп кода
Daniel
я даже не читал ваш пхп
Aleksandr
hmac же всегда разный ключ дает, разве нет?
Daniel
с чего бы?
Fastumkruk
я даже не читал ваш пхп
https://play.golang.org/p/XX8734zhzxb
Aleksandr
потому что генерит рандомную соль, которую включаетв ключ
Daniel
с одинаковой солью - одинаковый результат
Aleksandr
но соль генрится внутри
Daniel
а как проверять хеш тогда?
Daniel
неее
Aleksandr
поэтому с одним ключом мы каждый раз будем получать разный хэш
Daniel
так не бывает
Aleksandr
как не ыбвает
Aleksandr
соль включается в хэш
Aleksandr
ну погугли
Daniel
что именно я должен погуглить?
Aleksandr
там типа такой хэш algo/hash/salt
Daniel
зачем нужен unpredictable hash?
Daniel
я знаю, как устроен hmac
Aleksandr
ну и? на какой стадии ты соль задаешь?
Daniel
и на одинаковых входных данных он дает одинаковый результат
Daniel
потому что он для этого сделан
Aleksandr
да, сорри. я попутал с производной от hmac функцией, которая у меня в памяти отложилась
kås
Все ли я правильно делаю исходя от пхп кода
я думаю стоит самому попробовать, вас же направилии в нужном направлении.
Alexander
слушай, у тебя на пхп в массиве 5 элементов, а на го - 6, не?
kås
не, там добавляется еще один в конце)
Alexander
$arHash[] = $m_key; а, хитрая конструкция
Alexey
Други, я на го начал программировать день назад. Скажите, а как принято избавляться от вот такого: a, err := stringParameter(d, keyA) if err != nil { return nil, err } b, err := stringParameter(d, keyB) if err != nil { return nil, err } client, err := initialize(accessKey, secretKey) if err != nil { return nil, err } // тут еще 5 таких же вызовов return result, nil
Alexey
как-то странно копипасту вот такую делать после каждого вызова
Daniel
не принято
.
Не проверять на ошибки ))))0
Alexey
не принято
и что все пишут одну строчку логики и три боилерплейта?
Daniel
ага
Илья
Мапы слайсы каналы
они тоже передаются по значению, просто в структуре значении есть ссылка на данные, при передаче создается новый slice/map/chan который ссылается на тот же блок данных
Maksim (Ellrion)
и что все пишут одну строчку логики и три боилерплейта?
бойлирплейт это второе имя гоуленга)
Daniel
именно этот бойлерплейт - да
Daniel
бесит, но вариантов нет
Maksim (Ellrion)
и не только он. иначе небыло подхода кодогенерации
Daniel
а?!
Алексей
бесит, но вариантов нет
но вообще варианты есть, отказаться от Go к примеру, или помимо Go юзать ещё другой язык
Cat
/split микросервесы
Daniel
но вообще варианты есть, отказаться от Go к примеру, или помимо Go юзать ещё другой язык
это в другом чате. но замечу, что с эксепшенами народ вытворяет другое, но такое же гнусное непотребство
Алексей
кстати, а стектрейсы в Go имеются хоть в каком-то виде?
Daniel
а погуглить?
Алексей
зачем гуглить, если можно в чатике спросить? ушёл гуглить
Алексей
да, я уже смотрю, спасибо
Алексей
а, то есть ошибки по умолчанию стектрейса своего возникновения никак не содержат замечательно!
Daniel
с ошибками вообще нехорошо получилось
Daniel
иногда хочется форкнуть гошку :)
Алексей
её уже кстати форкали даже
Алексей
и дженерики запихнули
Daniel
во всю
Алексей
где-то в чатике даже было