首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于计算签名的r字符串

用于计算签名的r字符串
EN

Stack Overflow用户
提问于 2019-10-18 10:49:14
回答 1查看 113关注 0票数 0

对于以下任务,是否有不那么复杂的解决方案?

为了使用API,我需要使用下面的公式计算签名。问题来自请求体中的双引号,它们存储为\"而不是"

下面的代码生成文本1570702210SoMeF@ke123456[{ "id": "123", "title": "foo", "version": "2019-10-10 10:10:10 } ]}SoMeF@ke123456,正确的哈希是"b6e783309e9d6f8ee47647373a9f6086020b3af8" by http://www.sha1-online.com/

签名公式:十六进制( sha1({GMT_UNIXTIME} + {API_SECRET} + {CONTENT} + {API_SECRET}) ),其中

将二进制数据转换为十六进制格式的函数--标准散列函数SHA-1,必须返回二进制data

  • text字符串concatenation

  • {API_SECRET} -一个与登录{API_LOGIN}
  • {CONTENT}一起发出的密钥-请求主体

下面的代码给出了错误的签名"c7a7ecbb0fd2d6eebfb378bdd061ea88d9fb2f69“。

代码语言:javascript
复制
 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()函数的文件中,并从文件中计算签名,从而给出正确的签名"b6e783309e9d6f8ee47647373a9f6086020b3af8“。

代码语言:javascript
复制
cat(paste0(round(as.numeric(mstime)), API_SECRET, request_body_json, API_SECRET), file = 'rbj.txt')

signature <- digest('rbj.txt', algo = "sha1", file = TRUE) 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-18 12:41:40

防止输入被序列化:

代码语言:javascript
复制
digest(rbj1, algo = "sha1", serialize = FALSE)

[1] "b6e783309e9d6f8ee47647373a9f6086020b3af8"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58449321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档