亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在node.js中進行Base64編碼?

如何在node.js中進行Base64編碼?

不負相思意 2019-07-27 14:59:55
如何在node.js中進行Base64編碼?node.js有內置的base64編碼嗎?為什么我問這個的原因是,final()從crypto只能輸出十六進制,二進制或ASCII數據。例如: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');根據文檔,update()可以輸出base64編碼的數據。但是,final()不支持base64。我試過了,它會破裂。如果我這樣做:var ciph = cipher.update(plaintext, 'utf8', 'base64');     ciph += cipher.final('hex');然后我應該用什么解密?Hex或base64?因此,我正在尋找一個函數來對我的加密十六進制輸出進行base64編碼。謝謝。
查看完整描述

3 回答

?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

緩沖區可用于獲取字符串或數據,并對結果進行base64編碼。例如:

> console.log(Buffer.from("Hello World").toString('base64'));SGVsbG8gV29ybGQ=> console.log(Buffer.from("SGVsbG8gV29ybGQ=", 'base64').toString('ascii'))Hello World

緩沖區是一個全局對象,因此不需要。使用字符串創建的緩沖區可以使用可選的編碼參數來指定字符串所在的編碼??捎?code>toString和Buffer構造函數編碼如下:

'ascii' - 僅適用于7位ASCII數據。這種編碼方法非常快,如果設置將剝離高位。

'utf8' - 多字節編碼的Unicode字符。許多網頁和其他文檔格式使用UTF-8。

'ucs2' - 2字節,小端編碼的Unicode字符。它只能編碼BMP(基本多語言平面,U + 0000 - U + FFFF)。

'base64' - Base64字符串編碼。

'binary' - 一種通過僅使用每個字符的前8位將原始二進制數據編碼為字符串的方法。不推薦使用此編碼方法,應盡可能避免使用Buffer對象。在將來的Node版本中將刪除此編碼。


查看完整回答
反對 回復 2019-07-27
?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

接受的答案包含在大于6的節點版本中被視為安全問題的內容(盡管此用例似乎可能始終將輸入強制轉換為字符串)。

Buffer構造是根據過時文件。

以下是在ws庫中使用它可能導致的漏洞示例。

代碼段應為:

console.log(Buffer.from("Hello World").toString('base64'));console.log(Buffer.from("SGVsbG8gV29ybGQ=", 'base64').toString('ascii'));


查看完整回答
反對 回復 2019-07-27
  • 3 回答
  • 0 關注
  • 1348 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號