Я столкнулся с чем-то очень странным и хотел бы понять, что происходит. По какой-то причине я получаю другой результат, если я установил временную переменную в 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 символов с = в конце.
Что может быть причиной этого. Мне очень странно, что результат между обоими кодами будет разным. Я подтвердил, что в случае с openresty 1.15.8.2 как на ma c os x, так и на ubuntu 16.04 lts.