使用openssl加密和解密字符串

时间:2016-11-30 05:44:51

标签: encryption openssl

我的加密功能没有问题,并且做得不错但是我的解密功能有问题并没有给出正确的答案。 我意识到我在调试输出中做了EVP_DecryptFinal(& ctx,out_buf + oLen1,& oLen2)函数返回零,我觉得这个函数的问题。

请帮忙 这是我的程序,用C语言编写:

char* encrypt(char *buf) {

char* out_buf;
EVP_CIPHER_CTX ctx;
unsigned char ckey[] = "0123456789";
unsigned char ivec[] = "0123456789";
int oLen1 = 0;int oLen2 = 0;
int fsize = sizeof (buf);
out_buf = malloc(strlen(buf));

EVP_EncryptInit(&ctx, EVP_aes_128_cbc(), ckey, ivec);
EVP_EncryptUpdate(&ctx, out_buf, &oLen1, buf, fsize);
EVP_EncryptFinal(&ctx, out_buf + oLen1, &oLen2);
return out_buf;
}

char* decrypt(char *buf) {
char* out_buf;
EVP_CIPHER_CTX ctx;
unsigned char ckey[] = "0123456789";
unsigned char ivec[] = "0123456789";
int oLen1 = 0;
int oLen2 = 0;
int fsize = sizeof (buf);
out_buf = malloc(strlen(buf));

EVP_DecryptInit(&ctx, EVP_aes_128_cbc(), ckey, ivec);
EVP_DecryptUpdate(&ctx, out_buf, &oLen1, buf, fsize);
EVP_DecryptFinal(&ctx, out_buf + oLen1, &oLen2);
return out_buf;
}

int main(int argc, char *argv[]) {
 char* outenc=NULL;
 char* outdec=NULL;
 outenc=encrypt("Hello");
 outdec=decrypt(outenc);
 printf("Encryption is : %s\n",outenc);
 printf("Decryption is : %s\n",outdec);

return 0;
}

0 个答案:

没有答案