栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Python 调用GO 动态库

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 调用GO 动态库

因为python的AES加密结果和Go的加密结果总是对不上,最终只能让开发提供一个Go的加密库,用python来调用,保证加密结果是一样的。

Go生成动态库的的搞法开发知道,就不写啦,windows动态库是.dll,Linux是.so,不管哪种,python调用方式是一样的

此处仅记录python 调用方式:

Go 动态库接收和返回的其实是C_type格式,所以python调用也需要转换为相应的C_type格式,可参照此表转换

if __name__ == "__main__":
    lib = cdll.LoadLibrary("C:\Users\ws\Downloads\skm-share-codec.dll") 
    lib.aes_encrypt.argtypes = [ctypes.c_char_p, ctypes.c_int] # 参数格式转换
    lib.aes_encrypt.restype = ctypes.c_char_p # 返回值格式转换
    token_dict = {
        "inviteeType": 1,
        "invitee": "licong@163.com",
        "resourceType": 4,
        "resourceId": 433,
        "shareType": 7,
        "expireAt": 1666253258
    }
    data = json.dumps(token_dict) # 开发告知接收的是序列号的cha数组
    charArray = bytes(data.encode('utf-8')) # c_type Char数组对应python 的bytes
    aa = lib.aes_encrypt(charArray, len(charArray))
    print(type(aa))
    print(aa)
    print(aa.decode("utf-8").split(","))
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/909251.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号