3 Star 7 Fork 4

rushmore/zbus-proxy-msmq

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
crypt.cpp 3.45 KB
一键复制 编辑 原始数据 按行查看 历史
rushmore 提交于 2015-09-24 16:09 +08:00 . refine to standard RPC
#include "crypt.h"
#include "platform.h"
#include "json.h"
#include "KDEncodeCli.h" //金证交易加密
#include "encrypt.h" //金证加密2
#include "CryptDLL2.h" //网安解密
static void
password_base64_decode(json_t* password_json, char* password_raw){
size_t password_len;
byte* password_bin = json_base64bin(password_json, &password_len);
strncpy(password_raw, (char*) password_bin, password_len);
free(password_bin);
}
void
encrypt(json_t* params, msg_t* resp){
if(params == NULL){
msg_set_status(resp, "400");
msg_set_body(resp, "Missing params");
return;
}
if(params->type != JSON_ARRAY){
msg_set_status(resp, "400");
msg_set_body(resp, "params should be array");
return;
}
if(json_array_size(params) != 3){
msg_set_status(resp, "400");
msg_set_body(resp, "encryt requires 3 parameters");
return;
}
json_t* json_res = json_object();
json_t* algor_json = json_array_item(params, 0);
json_t* password_json = json_array_item(params, 1);
json_t* key_json = json_array_item(params, 2);
char * algor = algor_json->valuestring;
//char password[1024];
//password_base64_decode(password_json, password);
char* password = password_json->valuestring;
char* key = key_json->valuestring;
char res[1024] = {0};
if(strcmp(algor, "KDE") == 0){
KDEncode(KDCOMPLEX_ENCODE,(unsigned char*)password, strlen(password),
(unsigned char*)res, 64, key, strlen(key));
json_object_addstr(json_res, "result", res);
} else if(strcmp(algor,"AES") == 0){
long long llkey = _atoi64(key);
AES_Encrypt1(res, sizeof(res), llkey, password);
json_object_addstr(json_res, "result", res);
} else {
json_object_addstr(json_res, "error", "encrypt algorithm not support");
json_object_addstr(json_res, "stackTrace", "encrypt algorithm not support");
}
char* json_str = json_dump(json_res);
msg_set_json_body(resp, json_str);
free(json_str);
json_destroy(json_res);
}
void
decrypt(json_t* params, msg_t* resp){
if(params == NULL){
msg_set_status(resp, "400");
msg_set_body(resp, "Missing params");
return;
}
if(params->type != JSON_ARRAY){
msg_set_status(resp, "400");
msg_set_body(resp, "params should be array");
return;
}
if(json_array_size(params) != 4){
msg_set_status(resp, "400");
msg_set_body(resp, "decryt requires 4 parameters");
return;
}
json_t* json_res = json_object();
json_t* algor_json = json_array_item(params, 0);
json_t* public_json = json_array_item(params, 1);
json_t* private_json = json_array_item(params, 2);
json_t* password_json = json_array_item(params, 3);
char* algor_str = algor_json->valuestring;
char* public_str = public_json->valuestring;
char* private_str = private_json->valuestring;
char* password_str = password_json->valuestring;
//char password_str[1024];
//password_base64_decode(password_json, password_str);
char res[1024] = {0};
if(strcmp(algor_str, "WANGAN") == 0){
//DecryptStr存在内存leak, fxxking dll
int len = DecryptStr(public_str, private_str, password_str, res, sizeof(res));
if(len == -1){
json_object_addstr(json_res, "error", "decrpyt error");
json_object_addstr(json_res, "stackTrace", "decrpyt error");
} else {
res[len] = '\0';
json_object_addstr(json_res, "result", res);
}
} else {
json_object_addstr(json_res, "error", "decrypt algorithm not support");
json_object_addstr(json_res, "stackTrace", "decrypt algorithm not support");
}
char* json_str = json_dump(json_res);
msg_set_json_body(resp, json_str);
free(json_str);
json_destroy(json_res);
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/rushmore/zbus-proxy-msmq.git
git@gitee.com:rushmore/zbus-proxy-msmq.git
rushmore
zbus-proxy-msmq
zbus-proxy-msmq
master

搜索帮助