【我可以你也可以的Node.js】第二二篇 - Crypto 加密模组 #以串接 BitoPro API 为例

先来简单讲讲,为何需要?

因为是秘密所以不想让人知道。

而在如何做到这点?

你不要说不就没事了 (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 的 Hash
const 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


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章