美文网首页
NodeJS中如何进行base64编码

NodeJS中如何进行base64编码

作者: youthcity | 来源:发表于2018-08-03 13:10 被阅读166次

背景

在研究如何引导用户通过H5页面,关注公众号的问题时。发现公众号的 UID,经过了base64加密。
于是,思考如何在NodeJS中对字符串或数字,进行base64编码。

解决办法

console.log(Buffer.from('Hello').toString('base64'))  // SGVsbG8=
console.log(Buffer.from('SGVsbG8=', 'base64').toString('ascii'))  // hello

过程:

  1. string 新建一个 Buffer
  2. Buffer 解码成指定字符编码的 string

原理

主要用到了 Buffer.from 的API,文档如下:

Buffer.from(string[, encoding])

  • string <string> 要编码的字符串
  • encoding <string> string 的字符编码。 默认: 'utf8'

buf.toString([encoding[, start[, end]]])

  • encoding <string> 解码使用的字符编码。默认: 'utf8'
  • start <integer> 开始解码的字节偏移量。默认: 0
  • end <integer> 结束解码的字节偏移量(不包含)。 默认: buf.length
  • 返回: <string>

深度探索 - 什么是base64

Base64是一种基于64个可打印字符来表示二进制数据的表示方法。

换句话说,base64就是选用64个字符——小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"(再加上作为垫字的"=",实际上是65个字符)—— 作为一个基本字符集。然后,其他所有符号都转换成这个字符集中的字符。

转换步骤

  1. 将每三个字节作为一组,一共是24个二进制位。
  2. 将这24个二进制位分为四组,每个组有6个二进制位。
  3. 在每组前面加两个00,扩展成32个二进制位,即四个字节。
  4. 根据下表,得到扩展后的每个字节的对应符号,这就是Base64的编码值。
image.png

转换实例,可以参考阮老师这篇,对 Man字符进行base64编码的文章。

需要指出的是,经过base64编码后,3个字节会变成4个字节。因此,编码后的文本要比原文本大出三分之一。

总结

NodeJS中,Buffer是一个全局对象,所以使用时无需单独 require。在创建 Buffer 时,我们可以通过第二个参数,指明 string的编码类型(例如,base64)。

buf.toString时,也可以指定编码类型。默认为utf8。主要编码类型有 asciiutf8ucs2base64binary

参考资料

相关文章

网友评论

      本文标题:NodeJS中如何进行base64编码

      本文链接:https://www.haomeiwen.com/subject/kpuyvftx.html