Python 调用GO 动态库

Python 调用GO 动态库,第1张

因为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(","))

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/995942.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存