Есть код, написанный на 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. Не могли бы помочь с этим?
Добро пожаловать на 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.
Местами ещё оптимизируется, но вам пойдёт. Не забывайте отмечать ответы как верные и голосовать.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости