RSA2048秘钥对生成
SSL在线工具-在线密钥对生成-在线RSA、DSA、ECDSA公私钥生成-SSLeye官网
1、下载 jdk和so/dll
2、Windows 中将ddl放到 C:\Windows\system32
PS:网上也有一些其他的解决办法可以参考
放的地方不对就可能出现:no WeWorkFinanceSdk in java.library.path
3、Linux中so放到 /usr/lib
libWeWorkFinanceSdk_Java.so 要重命名成libWeWorkFinanceSdk.so
/usr/lib/libWeWorkFinanceSdk.so
以下备用执行【如果不生效再执行】:
查看环境变量:echo $LD_LIBRARY_PATH 先看下 如果有值就设置环境变量的时候追加,避免产生问题
设置环境变量:export LD_LIBRARY_PATH=/usr/lib +老的环境变量(如果有)
查看环境变量:echo $LD_LIBRARY_PATH
chomd -R 777 source.bash_profile 这一步的目的是刷新我们系统环境变量的缓存,让前面的步骤生效
4、Finance.java 包必须为com.tencent.wework
只末尾改成如下代码,Windows和linux 都用 WeWorkFinanceSdk
linux:libWeWorkFinanceSdk_Java 和 libWeWorkFinanceSdk都不能用
static {
log.info("java.library.path============={}", System.getProperty("java.library.path"));
if (isWindows()) {
log.info("java.library.path======windows======={}", System.getProperty("java.library.path"));
System.loadLibrary("WeWorkFinanceSdk");
} else {
log.info("Linux library path ======linux======={} {}", System.getProperty("java.library.path"));
System.loadLibrary("WeWorkFinanceSdk");
}
}
public static boolean isWindows() {
String osName = System.getProperties().getProperty("os.name");
log.info("当前系统为 ============={}", osName);
return osName.toUpperCase().indexOf("WINDOWS") != -1;
}
完成以上步骤就可以直接测试了TestController,具体根据业务实现就可以了
public static void main(String[] argsa){
String corpid = "ww9163475";
String secret = "q54w3lATZgU";
String publicKey = "-----BEGIN PUBLIC KEY-----\n" +
"MIIBIjANBHPhwqaTF4V8FBKUvQapDr\n" +
"4QIDAQAB\n" +
"-----END PUBLIC KEY-----";
String prikey = "-----BEGIN PRIVATE KEY-----\n" +
"MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC62hXkAjy522k5\n" +
"4p6RqrTaQgyr4UVCbkQwrrTV9abIHZmm/X\n" +
"hdP6hqJkaxSLfh0AHdKdJY4=\n" +
"-----END PRIVATE KEY-----";
long sdk = Finance.NewSdk();
System.out.println(Finance.Init(sdk, corpid, secret));
log.info("init=========={}", Finance.Init(sdk, corpid, secret));
long ret = 0;
String[] args = new String[6];
// 1:获取会话内容 2:拉取媒体消息函数 3:解析密文
args[0] = "1";
args[1] = "0";
args[2] = "10";
args[3] = "";
args[4] = "";
args[5] = "500";
// 1:获取会话内容
if (args[0].equals("1")) {
int seq = Integer.parseInt(args[1]);
int limit = Integer.parseInt(args[2]);
long slice = Finance.NewSlice();
ret = Finance.GetChatData(sdk, seq, limit, args[3], args[4], Integer.parseInt(args[5]), slice);
if (ret != 0) {
System.out.println("getchatdata ret " + ret);
return;
}
// 获取slice内容
System.out.println("getchatdata :" + Finance.GetContentFromSlice(slice));
log.info("聊天记录============= getchatdata :" + Finance.GetContentFromSlice(slice));
Finance.FreeSlice(slice);
// 2:拉取媒体消息函数
} else if (args[0].equals("2")) {
String indexbuf = "";
while (true) {
long media_data = Finance.NewMediaData();
ret = Finance.GetMediaData(sdk, indexbuf, args[1], args[2], args[3], Integer.parseInt(args[4]),
media_data);
System.out.println("getmediadata ret:" + ret);
if (ret != 0) {
return;
}
System.out.printf("getmediadata outindex len:%d, data_len:%d, is_finis:%d\n",
Finance.GetIndexLen(media_data), Finance.GetDataLen(media_data),
Finance.IsMediaDataFinish(media_data));
try {
FileOutputStream outputStream =
new FileOutputStream(new File("/home/qspace/upload/media_data"), true);
outputStream.write(Finance.GetData(media_data));
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
if (Finance.IsMediaDataFinish(media_data) == 1) {
// need free media_data
Finance.FreeMediaData(media_data);
break;
} else {
indexbuf = Finance.GetOutIndexBuf(media_data);
// need free media_data
Finance.FreeMediaData(media_data);
}
}
// 3:解析密文
} else if (args[0].equals("3")) {
// notice!
// // use prikey to decrpyt get args[1] by do it yourself
long msg = Finance.NewSlice();
ret = Finance.DecryptData(sdk, args[1], args[2], msg);
if (ret != 0) {
System.out.println("getchatdata ret " + ret);
return;
}
System.out.println("decrypt ret:" + ret + " msg:" + Finance.GetContentFromSlice(msg));
Finance.FreeSlice(msg);
} else {
System.out.println("wrong args " + args[0]);
}
Finance.DestroySdk(sdk);
}
docker file:
COPY 自己linux/so/linux/libWeWorkFinanceSdk.so
/usr/lib/wework/libWeWorkFinanceSdk.so
ENV LD_LIBRARY_PATH=/usr/lib/wework