OpenSSL EVP

编程入门 行业动态 更新时间:2024-10-06 13:17:34

<a href=https://www.elefans.com/category/jswz/34/1769523.html style=OpenSSL EVP"/>

OpenSSL EVP

#include <stdio.h>
#include <string.h>
#include <openssl/evp.h>
#include <openssl/x509.h>void tEVP_Encrypt()
{unsigned char key[EVP_MAX_KEY_LENGTH];	//密钥unsigned char iv[EVP_MAX_KEY_LENGTH];//初始化向量EVP_CIPHER_CTX ctx;//EVP算法上下文unsigned char out[1024];//输出密文缓冲区unsigned char out1[1024];//输出明文缓冲区int outl;//密文长度int outltmp;int outl1;//明文长度int outltmp1;char *msg="Hello OpenSSL! I am xxh!!!";//待加密的数据int rv;int rv1;int i;//加密过程//设置key和iv(可以采用随机数和可以是用户输入)for(i=0;i<24;i++){key[i]=i;}for(i=0;i<8;i++){iv[i]=i;}//初始化密码算法结构体EVP_CIPHER_CTX_init(&ctx);//设置算法和密钥rv = EVP_EncryptInit_ex(&ctx,EVP_des_ede3_cbc(),NULL,key,iv);if(rv!=1){printf("Err\n");return;}//数据加密rv = EVP_EncryptUpdate(&ctx,out,&outl,msg,strlen(msg));if(rv!=1){printf("Err\n");return;}//结束数据加密,把剩余数据输出。rv = EVP_EncryptFinal_ex(&ctx,out+outl,&outltmp);if(rv!=1){printf("Err\n");return;}outl = outl +outltmp;	printf("原文为:%s\n",msg);//打印输出密文printf("密文长度:%d\n密文数据:\n",outl);for(i=0;i<outl;i++){printf("0x%02x ",out[i]);}printf("\n");//解密过程rv1 = EVP_DecryptInit_ex(&ctx,EVP_des_ede3_cbc(),NULL,key,iv);if(rv1!=1){printf("Err1\n");return;}rv1 = EVP_DecryptUpdate(&ctx,out1,&outl1,out,outl);if(rv1!=1){printf("Err2\n");return;}rv1 = EVP_DecryptFinal_ex(&ctx,out1+outl1,&outltmp1);if(rv1!=1){printf("Err3\n");return;}outl1 = outl1 +outltmp1;//打印输出明文printf("\n\n原文长度:%d\n原文数据:\n",outl1);for(i=0;i<outl1;i++){printf("%c",out1[i]);}printf("\n");
}int main()
{ OpenSSL_add_all_algorithms();tEVP_Encrypt();return 0;
}

更多推荐

OpenSSL EVP

本文发布于:2024-02-28 12:08:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1769190.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:OpenSSL   EVP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!