先来简单讲讲,为何需要?
因为是秘密所以不想让人知道。
而在如何做到这点?
你不要说不就没事了 (X)
在生活中我们有很多一定要接受的事,
例如:
我没办法控制我得体重啊
我隔壁同事交不到女朋友啊!
我隔壁同事交不到女朋友啊!
我隔壁同事交不到女朋友啊!
一定要藉由网路传递得一些敏感讯息 ( token
或 密码
之类的 )
...
那我们从那么多的生活例子拿最后一个来说,我隔壁同事交不到女朋友已经不是秘密了 (硬要嘴)
就是当我们藉由网路上,
必须要透过帐号密码来注册某网站的会员
又或是藉由登入透过 token
,来授权某些行为时,
那不管是 密码
还是 token
都可以存取我们一些个人资料,
我相信你不会想要被做坏坏的事吧!
那这时你就需要透过加密来把明文变成密文,
目的就是为了不让他人能够轻易的被取得或是猜到。
而加密技术百百种我们这边就不多做解释,
我刚好逛到一篇我觉得整理的非常详细的有兴趣可以看一下
[CH18]加密技术(Cryptography)
注意:
这篇是很简单的使用而已,没有太多专业的分析研究,请斟酌观赏感谢~
以串接 BitoPro API 为例
申请 API Key
用 Node 串接
结果:
恭喜老爷贺喜夫人成功啦
今天文章到此结束
感谢大家
.
.
.
.
.
.
.
.
上面是受到这张图的启发 xDD
其实官方恰恰好有 Node 的範例
那我们为了不跑题这篇主要来关注的是如何透过 crypto
模组来加密获取 API
所需要的 headers
headers: { 'X-BITOPRO-APIKEY': apiKey, 'X-BITOPRO-PAYLOAD': payload, // For the authenticated APIs using DELETE method, you don't need the payload field. 'X-BITOPRO-SIGNATURE': signature },
apiKey - 就是直接拿官方的使用就可以了payload - 将 body JSON 转成 base64 就可以啰const payload = Buffer.from(JSON.stringify(body)).toString('base64')
signature - 将 api secret 和 payload 加密成 16进制的 SHA-384 的 Hashconst signature = const crypto = require('crypto')crypto .createHmac('sha384', apiSecret) .update(payload) .digest('hex')
使用方式看起来是不是很简单!
接着你就可以把这些塞到 headers ,来使用你的 API 啰
(这边以拿 User Balance 为例)
完整程式码参照官方详细使用您可以自己调整我只是懒惰
const request = require('request')const crypto = require('crypto')const apiKey = '[Your API key here]'const apiSecret = '[Your API secret here]'const baseUrl = 'https://api.bitopro.com/v2'const url = '/accounts/balance'const nonce = Date.now()const completeURL = baseUrl + url// This is the default body for the authenticated APIs using GET methodconst body = { identity: '[Your account (email)]', nonce }const payload = Buffer.from(JSON.stringify(body)).toString('base64')const signature = crypto .createHmac('sha384', apiSecret) .update(payload) .digest('hex')const options = { url: completeURL, headers: { 'X-BITOPRO-APIKEY': apiKey, 'X-BITOPRO-PAYLOAD': payload, // For the authenticated APIs using DELETE method, you don't need the payload field. 'X-BITOPRO-SIGNATURE': signature }, body: JSON.stringify(body) // For the authenticated APIs using GET method, you don't need the body field.}// GETreturn request.get( options, function(error, response, body) { console.log('response:', JSON.stringify(body, 0, 2)) })
以上
真的结束了xDD
感谢您的收看
越来越发现好像快没东西写了 xDD
专案的文章又没办法短时间内完成,有点尬 QQ