模組multibase
multibase 是在Base1x 編碼的基礎上,引入了多種編碼前綴的編碼方式
multibase 可以將相同的資料使用不同的編碼方式編碼,並且加上一個前綴表示編碼方式。multibase 支援的編碼方式共有15 種,分別是base1、base2、base8、base10、base16、base32、base32hex、base32z、base36、base40、base56、base58flickr、base58btc、base64、base64url。其中,base16、base32和base64是比較常用的。
multibase 可以用於在不改變二進位資料的情況下,改變其展示形式。例如,將一個隨機產生的二進位資料編碼為base32形式的字串:
1
2
3
4
5
6
7
8const {
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
6const {
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
2static String multibase.encode(Buffer data,
String codec);
呼叫參數:
- data:Buffer, 要編碼的數據
- codec: String, 指定編碼方式
回傳結果:
- String, 返回編碼的字串
decode
以multibase 方式解碼字串為二進位數據
1static Buffer multibase.decode(String data);
呼叫參數:
- data: String, 要解碼的字串
回傳結果:
- Buffer, 返回解碼的二進位數據