python代码:
from Crypto.Cipher import AES
import base64
def pad_text16(s):
return s + (16 - len(s) % 16) * '\0'
def encryptByKey(key, orgtext, iv):
encryptor = AES.new(key, AES.MODE_CBC, iv)
result = encryptor.encrypt(pad_text16(orgtext))
return base64.b64encode(result)
def decryptByKey(key, orgtext, iv):
orgtext = orgtext.replace(' ', '+')
orgtext = base64.b64decode(orgtext)
decryptor = AES.new(key, AES.MODE_CBC, iv)
result = decryptor.decrypt(orgtext)
return result.rstrip('\0')
if __name__ == "__main__":
iv = "78afc8512559b62f"
orgtext = "c6d1965bf800d5f7682636826c9a097e"
encrypted = encryptByKey(iv, orgtext, iv)
print '#####encrypted: ', encrypted
print '#####decrypted: ', decryptByKey(iv, encrypted, iv)
输出:
#####encrypted: zzZ15s2DIzkebVl47TLaMEwbwcznOg4HVsDGC1h8q4Cawc/553a+CyHEUSGABK26 #####decrypted: c6d1965bf800d5f7682636826c9a097e
两种语言加密出来的字符串再使用base64之后,不一样,有特地请公司的ios小伙伴使用OC去进行同样规则的加密,得到的结果是和python的结果相同,
所以想请教一下大家,是什么地方使用错误
def pad_text16(s):
return s + (16 - len(s) % 16) * '\0'
它在字符末尾加了东西
你在要LUA中也实现类似的东西,要不然,加密的字符串实际上是不一样的
--
--
邮件来自列表“openresty”,专用于技术讨论!
订阅: 请发空白邮件到 openresty...@googlegroups.com
发言: 请发邮件到 open...@googlegroups.com
退订: 请发邮件至 openresty+...@googlegroups.com
归档: http://groups.google.com/group/openresty
官网: http://openresty.org/
仓库: https://github.com/agentzh/ngx_openresty
教程: http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html
function fill_padding(text)
local text_length = string.len(text)
local left = text_length - math.floor(text_length / 16) * 16
local fill_length = 16 - left
local fill = ""
if left ~= 0 then
for i = 1, fill_length do
fill = fill .. '\0'
end
end
return text .. fill
end