代码拉取完成,页面将自动刷新
#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);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。