OpenResty json数据转换成base64格式

OpenResty目前内建支持的有Base64和JSON两种格式,下面我们介绍base64.

Base64格式使用64个字符,可以把任意数据转换为ASCII码可见字符串,应用得非常普遍。OpenResty使用ngx.encode_base64和ngx.decode_base64这两个函数实现了标准的Base64编码和解码:

  1. local str = "1234"

  2. local enc = ngx.encode_base64(str) -- 编码为“ MTizNA==”

  3. local dec= ngx.decode_base64(enc) -- 解码还原

Base64编码有一个“padding”特性,编码后长度不是4 的倍数时会用“=”填补。向ngx.encode_base64传递第二个参数nopadding可以禁止填充。

ngx.encode_base64(str, true)    -- 编码结果会是"MTizNA"

标准的Base64编码使用了字符“+”和“/”,不适合用在HTTP协议的URL里,因为“ + ”和“/”会被转换成“%2F ” “ %2B ”导致编码损坏,所以Base64编码还有一种改进形式,它用“-”和“_”替代了“+”和“/”,也不使用“=”填补,可以安全地用在URL 里。

OpenResty在库ngx.base64里提供两个函数: encode_base64url和decode_base64-url支持Base64URL 编码:

local json = require('cjson')
local base64 = require('ngx.base64')
local str = {name = "宋", age = 11, sex = "男"}
str = base64.encode_base64url(json.encode(str))
ngx.say(str)      --eyJzZXgiOiLnlLciLCJhZ2UiOjExLCJuYW1lIjoi5a6LIn0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值