添加cfadmin

返回上一级

直接上cfadmin项目地址,目前我只需要里面的加密库,将里面的lcrypt文件夹复制出来放到skynet项目的3rd文件夹

编译

编辑lcrypt.h文件,原代码如下

#include <core.h>
#include <openssl/ripemd.h>
#include <openssl/rc4.h>
#include <openssl/md4.h>
#include <openssl/md5.h>
#include <openssl/sha.h>
#include <openssl/pem.h>
#include <openssl/rsa.h>
#include <openssl/hmac.h>
#include <openssl/rand.h>

改成下面

#include <lua.h>
#include <lauxlib.h>
#include <string.h>
#include <openssl/ripemd.h>
#include <openssl/rc4.h>
#include <openssl/md4.h>
#include <openssl/md5.h>
#include <openssl/sha.h>
#include <openssl/pem.h>
#include <openssl/rsa.h>
#include <openssl/hmac.h>
#include <openssl/rand.h>

makefile的修改

LUA_CLIB中添加

lcrypt

TLS_LIB=/usr/local/openssl-1.1.1q/lib

TLS_INC=/usr/local/openssl-1.1.1q/include

openssl我指定了路径,因为是新安装的,安装教程可百度

下面添加两行

$(LUA_CLIB_PATH)/lcrypt.so : 3rd/lcrypt/lcrypt.c 3rd/lcrypt/aes.c 3rd/lcrypt/des.c 3rd/lcrypt/dh.c 3rd/lcrypt/rsa.c 3rd/lcrypt/sha.c 3rd/lcrypt/hmac.c 3rd/lcrypt/hmac_ex.c 3rd/lcrypt/b64.c 3rd/lcrypt/crc.c 3rd/lcrypt/url.c 3rd/lcrypt/hex.c 3rd/lcrypt/uuid.c 3rd/lcrypt/sm.c 3rd/lcrypt/rc.c | $(LUA_CLIB_PATH)$(CC) $(CFLAGS) $(SHARED) -I3rd/lcrypt -L$(TLS_LIB) -I$(TLS_INC) $^ -o $@ -lssl

重新编译,生成lcrypt.so文件,搞定

使用

复制cfadmin中的lualib/crypt文件夹到自己项目,例如放在 cfadmin/crypt文件夹

将里面的init文件改动一下

require “crypt.xx” 均改成

require “cfadmin.crypt.xx”

(因为我原项目有crypt,不改会造成读取文件错乱)

微信下单加密

下单使用的是sha256 with rsa加密

local cfadmin_crypt = require "cfadmin.crypt"
local header_sign = cfadmin_crypt.rsa_sign(header_sign_str,wechat_pay_v3_apiclient_pem_data,"sha256")

--客户端的加密

order.sign = cfadmin_crypt.rsa_sign(client_sign_str,wechat_pay_v3_apiclient_pem_data,"sha256")

参数header_sign_str和client_sign_str见上一篇文章微信V3支付,第二个参数可以放私钥的文件路径,也可以放文件内容

微信回调解密

回调使用的是aes-256-gcm解密

local c_ret = cfadmin_crypt.aes_256_gcm_decrypt(V3_key,crypt.base64decode(info.ciphertext),info.nonce,(info.associated_data or ""))
© 江山山 all right reserved,powered by Gitbook最后更新时间: 2024-08-12 10:00:01

results matching ""

    No results matching ""