兄弟,问题的关键在于加密和解密算法的一致性,我刚google一把,借鉴那些C#, Java的例子,今天测试通过了:
var key = CryptoJS.MD5("my key");
var iv = CryptoJS.MD5("my IV");
encrypted = CryptoJS.AES.encrypt("message here我!", key, {iv: iv});
把encrypted.toString()传到ngx_lua的内容处理器中,
local aes = require "resty.aes"
local str = require "resty.string"
local resty_md5 = require "resty.md5"
local args = ngx.req.get_uri_args()
local md5 = resty_md5:new()
md5:update("my key")
local digest = md5:final()
local aes_iv_key = digest
md5 = resty_md5:new()
md5:update("my IV")
digest = md5:final()
local aes_iv_val = digest
local aes_iv = aes:new(aes_iv_key, nil, aes.cipher(128,"cbc"), {iv=aes_iv_val})
ngx.say(aes_iv:decrypt(ngx.decode_base64(args.destr)))
我的测试已经 通过了,我的代码凌乱了些,你自己改改 吧,重要的是你要用
AES 128 CBC with IV and no SALT
这个东东(我也不太懂CBC和IV是个啥).
在 2014年11月2日星期日UTC+8下午11时08分27秒,Chan WingChung写道: