#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/evp.h>
#define KEY_SIZE 24
char *sessionid = "793417094434122988465951";
int do_encrypt(char * szInput, int nInLen, unsigned char *szOutput)
{
int iOutLen = 0;
int iTmpLen = 0;
char iv[KEY_SIZE] = {0};
EVP_CIPHER_CTX ctx; //初始化,用到什么加密方式由EVP_des_ede3_ecb()决定的,如果改为其他加密方式,只要改这个就可以了。
EVP_CIPHER_CTX_init(&ctx);
EVP_EncryptInit_ex(&ctx, EVP_des_ede3_ecb(), NULL, (const unsigned char *)sessionid, (const unsigned char *)iv); //加密
if(!EVP_EncryptUpdate(&ctx, (unsigned char*)szOutput, &iOutLen, (const unsigned char *)szInput, nInLen))
{
EVP_CIPHER_CTX_cleanup(&ctx);
return 0;
} //结束加密
if(!EVP_EncryptFinal_ex(&ctx, (unsigned char *)(szOutput + iOutLen), &iTmpLen))
{
EVP_CIPHER_CTX_cleanup(&ctx);
return 0;
}
iOutLen += iTmpLen;
EVP_CIPHER_CTX_cleanup(&ctx);
return iOutLen;
}
int main()
{
FILE *fp = fopen("quartz.xml", "r");
FILE *fp2 = fopen("quartz2.xml", "a");
char string[65535] = "";
fseek(fp, 0L, SEEK_END);
int stringlen = ftell(fp);
rewind(fp);
fread(string, 1, stringlen , fp);
fclose(fp);
//stringlen = strlen(string);
unsigned long datalen = 0;
unsigned char *des_data = NULL;
unsigned long len = strlen(sessionid);
if(len > 0 && (des_data = (unsigned char *)malloc(stringlen+16)) != NULL)
{
datalen = do_encrypt(string, stringlen, des_data);
des_data[datalen] = '\0';
}
else
{
datalen = stringlen;
}
fwrite(des_data, datalen, 1, fp2);
fclose(fp2);
return 0;
#include <stdlib.h>
#include <string.h>
#include <openssl/evp.h>
#define KEY_SIZE 24
char *sessionid = "793417094434122988465951";
int do_encrypt(char * szInput, int nInLen, unsigned char *szOutput)
{
int iOutLen = 0;
int iTmpLen = 0;
char iv[KEY_SIZE] = {0};
EVP_CIPHER_CTX ctx; //初始化,用到什么加密方式由EVP_des_ede3_ecb()决定的,如果改为其他加密方式,只要改这个就可以了。
EVP_CIPHER_CTX_init(&ctx);
EVP_EncryptInit_ex(&ctx, EVP_des_ede3_ecb(), NULL, (const unsigned char *)sessionid, (const unsigned char *)iv); //加密
if(!EVP_EncryptUpdate(&ctx, (unsigned char*)szOutput, &iOutLen, (const unsigned char *)szInput, nInLen))
{
EVP_CIPHER_CTX_cleanup(&ctx);
return 0;
} //结束加密
if(!EVP_EncryptFinal_ex(&ctx, (unsigned char *)(szOutput + iOutLen), &iTmpLen))
{
EVP_CIPHER_CTX_cleanup(&ctx);
return 0;
}
iOutLen += iTmpLen;
EVP_CIPHER_CTX_cleanup(&ctx);
return iOutLen;
}
int main()
{
FILE *fp = fopen("quartz.xml", "r");
FILE *fp2 = fopen("quartz2.xml", "a");
char string[65535] = "";
fseek(fp, 0L, SEEK_END);
int stringlen = ftell(fp);
rewind(fp);
fread(string, 1, stringlen , fp);
fclose(fp);
//stringlen = strlen(string);
unsigned long datalen = 0;
unsigned char *des_data = NULL;
unsigned long len = strlen(sessionid);
if(len > 0 && (des_data = (unsigned char *)malloc(stringlen+16)) != NULL)
{
datalen = do_encrypt(string, stringlen, des_data);
des_data[datalen] = '\0';
}
else
{
datalen = stringlen;
}
fwrite(des_data, datalen, 1, fp2);
fclose(fp2);
return 0;
}
编译
gcc jiami.c -o jiami -lssl