如何在node.js中進(jìn)行Base64編碼?node.js有內(nèi)置的base64編碼嗎?為什么我問這個的原因是,final()從crypto只能輸出十六進(jìn)制,二進(jìn)制或ASCII數(shù)據(jù)。例如:var cipher = crypto.createCipheriv('des-ede3-cbc', encryption_key, iv);var ciph = cipher.update(plaintext, 'utf8', 'hex');ciph += cipher.final('hex');var decipher = crypto.createDecipheriv('des-ede3-cbc', encryption_key, iv);var txt = decipher.update(ciph, 'hex', 'utf8');txt += decipher.final('utf8');根據(jù)文檔,update()可以輸出base64編碼的數(shù)據(jù)。但是,final()不支持base64。我試過了,它會破裂。如果我這樣做:var ciph = cipher.update(plaintext, 'utf8', 'base64');
ciph += cipher.final('hex');然后我應(yīng)該用什么解密?Hex或base64?因此,我正在尋找一個函數(shù)來對我的加密十六進(jìn)制輸出進(jìn)行base64編碼。謝謝。
3 回答

30秒到達(dá)戰(zhàn)場
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個贊
緩沖區(qū)可用于獲取字符串或數(shù)據(jù),并對結(jié)果進(jìn)行base64編碼。例如:
> console.log(Buffer.from("Hello World").toString('base64'));SGVsbG8gV29ybGQ=> console.log(Buffer.from("SGVsbG8gV29ybGQ=", 'base64').toString('ascii'))Hello World
緩沖區(qū)是一個全局對象,因此不需要。使用字符串創(chuàng)建的緩沖區(qū)可以使用可選的編碼參數(shù)來指定字符串所在的編碼??捎?code>toString和Buffer
構(gòu)造函數(shù)編碼如下:
'ascii' - 僅適用于7位ASCII數(shù)據(jù)。這種編碼方法非???,如果設(shè)置將剝離高位。
'utf8' - 多字節(jié)編碼的Unicode字符。許多網(wǎng)頁和其他文檔格式使用UTF-8。
'ucs2' - 2字節(jié),小端編碼的Unicode字符。它只能編碼BMP(基本多語言平面,U + 0000 - U + FFFF)。
'base64' - Base64字符串編碼。
'binary' - 一種通過僅使用每個字符的前8位將原始二進(jìn)制數(shù)據(jù)編碼為字符串的方法。不推薦使用此編碼方法,應(yīng)盡可能避免使用Buffer對象。在將來的Node版本中將刪除此編碼。

墨色風(fēng)雨
TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個贊
- 3 回答
- 0 關(guān)注
- 1343 瀏覽
添加回答
舉報
0/150
提交
取消