Base64, HMAC, и Hex на Go

154
18 сентября 2021, 00:30

Есть код, написанный на JavaScript:

const requestUrl = 'text_url';
const data = {
    request: requestUrl,
    nonce: Date.now(),
};
const stringifiedData = JSON.stringify(data);
const payload = new Buffer(stringifiedData)
    .toString('base64');
const signature = crypto
    .createHmac('sha512', apiSecret)
    .update(payload)
    .digest('hex');

И имеется проблема переписать этот код на язык Go. Не могли бы помочь с этим?

Answer 1

Добро пожаловать на StackOverflow. Здесь крайне не принято задавать вопросы, по которым не видно, как лично вы уже пытались решить проблему. Это не по правилам сообщества и вообще не вежливо. Надеюсь, что в дальнейшем вы будете придерживаться правил.

Что же касается вашего кода:

var err error
const requestURL = `https://example.com`
var data = struct {
    Request string    `json:"request"`
    Nonce   time.Time `json:"nonce"`
}{
    Request: requestURL,
    Nonce:   time.Now(),
}
var dataBytes []byte
dataBytes, err = json.Marshal(data)
// Check err.
var payloadBytes = make([]byte, base64.StdEncoding.EncodedLen(len(dataBytes)))
base64.StdEncoding.Encode(payloadBytes, dataBytes)
var apiSecret = []byte(`123456`)
var mac = hmac.New(sha512.New, apiSecret)
_, err = mac.Write(payloadBytes)
// Check err.
var signatureBytes = mac.Sum(nil)
var signature = hex.EncodeToString(signatureBytes)
fmt.Printf("signature: %s\n", signature)

Playground: https://play.golang.org/p/QGNR8BgIPdM.

Местами ещё оптимизируется, но вам пойдёт. Не забывайте отмечать ответы как верные и голосовать.

READ ALSO
Проблема с Rest оператором js

Проблема с Rest оператором js

функция возвращает массив с теми аргументами, которые соответствуют типу данных, переданному в первом аргументе но если я возвращаю не consolelog(...

90
Задача с массивом JS

Задача с массивом JS

// Дан массив числами, например: [10, 20, 30, 50, 235, 3000]// Выведите на экран только те числа из массива, которые начинаются на цифру 1, 2 или 5

242
Отправка фото с камеры IOS на форму сайта

Отправка фото с камеры IOS на форму сайта

Нужно в форму сайта добавить кнопку "Сделать фото" (IOS устройсво), при нажатии на которую открывается приложение камеры устройста, делается...

85
корректно получить ключ и его значение

корректно получить ключ и его значение

Не могу корректно получить ключ и его значение из объекта value ввида {"ключ": "значение"} и сравнить его с перемнной bbb

81