|
[讨论]怎么生成tcc的libtcc为静态库
Dll2Lib,搜索一下 |
|
[讨论]为什么有的人长期纠结X-Ways Forensics版呢?
虽然不知道你们在聊什么,但是感觉很强大 |
|
[讨论]unpack论坛怎么关站了
路过看看哈 |
|
[求助]openssl中有公私钥内存数据,如何构建一个RSA对象出来?
// openssl_rsa.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include<stdio.h> #include<stdlib.h> #include<string> #include<openssl/rsa.h> #include<openssl/pem.h> #include<openssl/err.h> #pragma comment(lib, "d:\\opensll\\lib\\libeay32") using namespace std; #define BUFFSIZE 4096 unsigned char key1 [0x40] = { 0x91, 0x43, 0x7c, 0xd8, 0x3d, 0x07, 0x22, 0xce, 0x41, 0x0b, 0xd9, 0x6c, 0xa8, 0x0c, 0xff, 0x34, 0x89, 0x5a, 0x31, 0x5e, 0x25, 0x12, 0x8b, 0xc3, 0x25, 0x29, 0xd5, 0xf6, 0x14, 0xe4, 0x50, 0x97, 0xe1, 0x2e, 0x45, 0x0c, 0x68, 0xda, 0xf1, 0xad, 0x8d, 0x8e, 0x74, 0x0a, 0xb7, 0x08, 0x56, 0x4f, 0x4f, 0x31, 0x7b, 0x80, 0x12, 0xc4, 0x48, 0x56, 0xde, 0x56, 0x7d, 0x58, 0x52, 0x24, 0x97, 0xdb }; unsigned char key2 [0x40] = { 0xf3, 0x84, 0xff, 0x17, 0xa8, 0x16, 0x5a, 0x0e, 0xce, 0xb0, 0xa5, 0x26, 0xf5, 0x44, 0x12, 0xa9, 0x9a, 0x88, 0xec, 0x69, 0x68, 0xb5, 0xe1, 0x4f, 0xaf, 0x7a, 0x08, 0xbe, 0xe9, 0x2f, 0xfd, 0xe3, 0x5b, 0x18, 0xc5, 0x46, 0x97, 0xd8, 0x6e, 0xcc, 0x63, 0x97, 0x00, 0xe6, 0x42, 0xbc, 0x91, 0x75, 0x7e, 0x52, 0x2d, 0xc5, 0xef, 0x4c, 0x95, 0xcc, 0xd7, 0x46, 0xd2, 0xd2, 0x59, 0xdb, 0x00, 0xc5 }; char * Base64Encode(const char * input, int length, bool with_new_line) { BIO * bmem = NULL; BIO * b64 = NULL; BUF_MEM * bptr = NULL; b64 = BIO_new(BIO_f_base64()); if(!with_new_line) { BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL); } bmem = BIO_new(BIO_s_mem()); b64 = BIO_push(b64, bmem); BIO_write(b64, input, length); BIO_flush(b64); BIO_get_mem_ptr(b64, &bptr); char * buff = (char *)malloc(bptr->length + 1); memcpy(buff, bptr->data, bptr->length); buff[bptr->length] = 0; BIO_free_all(b64); return buff; } char * Base64Decode(char * input, int length, bool with_new_line) { BIO * b64 = NULL; BIO * bmem = NULL; char * buffer = (char *)malloc(length); memset(buffer, 0, length); b64 = BIO_new(BIO_f_base64()); if(!with_new_line) { BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL); } bmem = BIO_new_mem_buf(input, length); bmem = BIO_push(b64, bmem); BIO_read(bmem, buffer, length); BIO_free_all(bmem); return buffer; } char *my_encrypt(char *str) { RSA *rsa = NULL; FILE *fp = NULL; char *en = NULL; int len = 0; int rsa_len = 0; rsa = RSA_new(); // 这里该如何用上面的key构建一个RSA对象? RSA_print_fp(stdout, rsa, 0); len = strlen(str); rsa_len = RSA_size(rsa); en = (char *)malloc(rsa_len + 1); memset(en, 0, rsa_len + 1); if (RSA_public_encrypt(rsa_len, (unsigned char *)str, (unsigned char*)en, rsa, RSA_NO_PADDING) < 0) { return NULL; } RSA_free(rsa); return en; } char *my_decrypt(char *str) { RSA *rsa = NULL; FILE *fp = NULL; char *de = NULL; int rsa_len = 0; rsa = RSA_new(); RSA_print_fp(stdout, rsa, 0); rsa_len = RSA_size(rsa); de = (char *)malloc(rsa_len + 1); memset(de, 0, rsa_len + 1); if (RSA_private_decrypt(rsa_len, (unsigned char *)str, (unsigned char*)de, rsa, RSA_NO_PADDING) < 0) { return NULL; } RSA_free(rsa); return de; } int main(int argc, char *argv[]) { char *src = "hello, world!"; char *en = NULL; char *de = NULL; printf("src is: %s\n", src); en = my_encrypt(src); printf("enc is: %s\n", en); de= my_decrypt(en); printf("dec is: %s\n", de); if (en != NULL) { free(en); } if (de != NULL) { free(de); } return 0; } |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值