lua - 将中间结果存储在 lua openresty 中的临时变量中会产生不同的结果
问题描述
我遇到了一些非常奇怪的事情,想了解发生了什么。出于某种原因,如果我在 lua 中设置一个临时变量来保存中间结果,我会得到不同的结果。
我有以下代码:
local random = require("resty.random")
local token = ngx.encode_base64(random.bytes(32))
print("len(" .. string.len(token) .. ") " .. token) -- > len(43) OUOoBKfxLZDtE7yrHFzThF2e7dc6Wtjmzz3C6lQC67I
它不返回有效的 base64 字符串。= 缺失,字符串只有 43 个字符。
但是,如果我执行以下操作,它会起作用
local random = require("resty.random")
local bytes = random.bytes(32)
local token = ngx.encode_base64(bytes)
print("len(" .. string.len(token) .. ") " .. token) -- > len(44) 1E49IwlcsyfIBEwWBRXhTV2eFrc7QyYoFZ0kC1OsuTM=
base64 字符串有效。该字符串为 44 个字符,末尾带有 =。
这可能是什么原因造成的。我很奇怪两个代码之间的结果会有所不同。我已经确认 mac os x 和 ubuntu 16.04 lts 上的 openresty 1.15.8.2 都是这种情况。
解决方案
encode_base64有第二个参数,它打开无填充模式。所以我认为你的随机函数返回第二个真实值。我建议试着称之为ngx.encode_base64((random.bytes(32))
推荐阅读
- c - malloc 需要操作系统支持吗?
- java - 加载库失败:[netty_tcnative_linux_arm_32,netty_tcnative_linux_arm_32_fedora,netty_tcnative_arm_32,netty_tcnative]
- html - 网站上传到实时主机时字体显示不正确
- python - 如何将标题添加到我从机器学习数据库中提取的以下数据中
- android - Android Kotlin:领域多对一关系
- search - 信息检索:如何计算多个搜索词的 tf-idf?
- python-3.x - 降级 chromedriver
- xml - XML Schema:具有此名称模式的元素具有此属性
- java - Hibernate:只需使用 @EmbeddedId 作为主键保存实体
- python - 在 numpy 数组中迭代