我的加密功能没有问题,并且做得不错但是我的解密功能有问题并没有给出正确的答案。 我意识到我在调试输出中做了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;
}