首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails中的API密钥生成

rails中的API密钥生成
EN

Stack Overflow用户
提问于 2020-05-10 16:05:37
回答 1查看 218关注 0票数 1

我一直在尝试通过rials生成密钥,但由于某些原因,它与我在python中看到的有所不同。

Python代码:

代码语言:javascript
复制
# Import required Python libraries
import time
import base64
import hashlib
import hmac

# Decode API private key from base64 format displayed in account management
api_secret = base64.b64decode("FRs+gtq09rR7OFtKj9BGhyOGS3u5vtY/EdiIBO9kD8NFtRX7w7LeJDSrX6cq1D8zmQmGkWFjksuhBvKOAWJohQ==")

# Variables (API method, nonce, and POST data)
api_path = "/0/private/TradeBalance"
api_nonce = str(int(time.time()*1000))
api_post = "nonce=" + api_nonce + "&asset=xbt"

# Cryptographic hash algorithms
api_sha256 = hashlib.sha256(api_nonce + api_post).digest()
api_hmac = hmac.new(api_secret, api_path + api_sha256, hashlib.sha512)

# Encode signature into base64 format used in API-Sign value
api_signature = base64.b64encode(api_hmac.digest())

# API authentication signature for use in API-Sign HTTP header
print(api_signature)

我设法得到的最接近的代码是(Ruby on rails):

代码语言:javascript
复制
PRIVATE_KEY = "FRs+gtq09rR7OFtKj9BGhyOGS3u5vtY/EdiIBO9kD8NFtRX7w7LeJDSrX6cq1D8zmQmGkWFjksuhBvKOAWJohQ=="

secret = Base64.decode64(PRIVATE_KEY)
path = '/0/private/TradeBalance'
nonce = DateTime.now.iso8601(6).to_time.to_i
post = "nonce=" + nonce.to_s + '&asset=xbt'

sha256 = OpenSSL::Digest::SHA256.new(nonce.to_s + post)
hmac = OpenSSL::HMAC.new(secret, path + sha256.to_s)

但hmac返回:

代码语言:javascript
复制
Traceback (most recent call last):
        3: from (irb):89
        2: from (irb):89:in `new'
        1: from (irb):89:in `initialize'
RuntimeError (Unsupported digest algorithm (/0/private/TradeBalance51967c001989cf328de93113f629f71b716be83fafb38dff63aef8d970d61df7).: first num too large)

我还注意到,即使是我的base64解码也不同于python one最初返回的内容。

EN

回答 1

Stack Overflow用户

发布于 2020-07-27 15:25:23

Ruby on Rails还提供了一个内置函数,如

代码语言:javascript
复制
SecureRandom.hex(64)

如果您需要URL安全的密钥,比如说用于API密钥生成,Ruby可以满足您的需求。

代码语言:javascript
复制
SecureRandom.urlsafe_base64
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61708938

复制
相关文章

相似问题

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