github lua-string-resty地址:
https://github.com/openresty/lua-resty-string
lua代码:
local aes = require "resty.aes"
local str = require "resty.string"
local iv = "78afc8512559b62f"
local key = "78afc8512559b62f"
local text = "c6d1965bf800d5f7682636826c9a097e"
local aes_128_cbc_with_iv = assert(aes:new(key, nil, aes.cipher(128, "cbc"), {iv=iv, method=nil})
local encrypted = ngx.encode_base64(aes_128_cbc_with_iv:encrypt(text))
使用openresty的aes加密,采用的补齐方式如下:
如果不满足16字节的整倍数,差几个,就补齐\0x几
例如: vpn12345vpn,共11个,还差5个,则后面补齐5个\0x5
如果是16的整倍数,则补齐16个\0x10,
固上述aes加密后的密文解密如下:
from Crypto.Cipher import AES
import base64
def decryptByKey(key, orgtext, iv):
pad = ["\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x10", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f"]
orgtext = base64.b64decode(orgtext)
decryptor = AES.new(key, AES.MODE_CBC, iv)
result = decryptor.decrypt(orgtext)
key = result[-1:]
if key in pad:
result = result.rstrip(key)
return result
参考链接:
https://groups.google.com/forum/#!topic/openresty/syqjf7C8O74