需求
用户登录后,go服务端把身份、IP信息等加密放到cookie中。Nginx(基于openresty构建)lua解密,比较访问的IP与cookie中记录的IP是否一致,不一致则进行拦截。
以下采用CBC模式实现,跨语言的AES加解密,关键还是使用一致的模式、填充和向量。
Nginx lua AES加解密
环境构建:openresty docker
依赖:lua-resty-string
lua-resty-string中调用的是openssl的库,所以加的padding用的是openssl默认的PKCS7填充方式
-- user_decrypt.lua
local user_decrypt = {}
local aes = require "resty.aes"
user_decrypt.aesCoder = nil
local function isCoderOk()
return user_decrypt.aesCoder
end
-- 初始化加密器
function user_decrypt.initCoder(key, iv)
if isCoderOk() then
return
end
-- 当前使用AES256, 若修改为128,使用aes.cipher(128,"cbc"), key修改为16位
user_decrypt.aesCoder = aes:new(key, nil,