Есть ли менее сложное решение для следующей задачи?
Для работы с API мне нужно вычислить сигнатуру по формуле ниже. Проблема возникает из двойных кавычек в теле запроса, они хранятся как \"
, а не "
.
Код ниже генерирует текст 1570702210SoMeF@ke123456[{ "id": "123", "title": "foo", "version": "2019-10-10 10:10:10 } ]}SoMeF@ke123456
, а правильный хеш равен "b6e783309e9d6f8ee47647373a9f6086020b3af8"
при http://www.sha1 -online. com /
Формула подписи: hex (sha1 ({GMT_UNIXTIME} + {API_SECRET} + {CONTENT} + {API_SECRET})), где
- hex () -функция, преобразующая двоичные данные в шестнадцатеричный формат
- sha1 () - стандартная хеш-функция SHA-1, должна возвращать двоичные данные
- конкатенация текстовых строк
- {API_SECRET} - секретный ключ, который выдается вместе с логином {API_LOGIN}
- {CONTENT} - тело запроса
Следующий код дает неверную подпись "c7a7ecbb0fd2d6eebfb378bdd061ea88d9fb2f69 ".
library(stringr)
library(lubridate)
library(digest)
API_SECRET <- 'SoMeF@ke123456'
mstime <- ymd_hms('2019-10-10 10:10:10')
my_id <- 123
title1 <- 'foo'
request_body_json <- paste0('[{ "id": "', my_id,'", "title": "', title1, '", "version": "', mstime, ' } ]}')
rbj1 <- paste0(round(as.numeric(mstime)), API_SECRET, request_body_json, API_SECRET)
signature <- digest(rbj1, algo = "sha1")
Я вижу обходной путь с сохранением строки в файл с помощью функции cat()
и вычисляю сигнатуру из файла, которая дает правильную подпись" b6e783309e9d6f8ee4764737 * 203f3af36036036366f93636036369