Module 基礎模組

模組multibase

multibase 是在Base1x 編碼的基礎上,引入了多種編碼前綴的編碼方式

multibase 可以將相同的資料使用不同的編碼方式編碼,並且加上一個前綴表示編碼方式。multibase 支援的編碼方式共有15 種,分別是base1、base2、base8、base10、base16、base32、base32hex、base32z、base36、base40、base56、base58flickr、base58btc、base64、base64url。其中,base16、base32base64是比較常用的。

multibase 可以用於在不改變二進位資料的情況下,改變其展示形式。例如,將一個隨機產生的二進位資料編碼為base32形式的字串:

1 2 3 4 5 6 7 8
const { encode } = require('multibase'); const crypto = require('crypto'); const data = crypto.randomBytes(10); // generate 10 bytes random data const encodedStr = encode(data, 'base32'); // encode data to base32 string console.log(encodedStr); // ==> "bpgwnvztqmlbo5fy"

將上述字串解碼為原始的二進位資料:

1 2 3 4 5 6
const { decode } = require('multibase'); const data = decode('bpgwnvztqmlbo5fy', 'base32'); // decode base32 string to data console.log(data); // ==> <Buffer a7 55 3d 33 ca 97 ac 0d aa 40>

可以看到,透過multibase,我們將原始的二進位資料編碼為了base32形式的字串,並且可以將這個字串解碼為原始的二進位資料。

靜態函數

encode

以multibase 方式編碼數據

1 2
static String multibase.encode(Buffer data, String codec);

呼叫參數:

  • data:Buffer, 要編碼的數據
  • codec: String, 指定編碼方式

回傳結果:

  • String, 返回編碼的字串

decode

以multibase 方式解碼字串為二進位數據

1
static Buffer multibase.decode(String data);

呼叫參數:

  • data: String, 要解碼的字串

回傳結果:

  • Buffer, 返回解碼的二進位數據