在VS中使用OpenSSL库

您所在的位置:网站首页 md5_update函数的用法 在VS中使用OpenSSL库

在VS中使用OpenSSL库

2023-04-30 11:08| 来源: 网络整理| 查看: 265

准备工作

1、在项目名称上单机右键,点击属性。在“配置属性”中选择“VC++目录”,填写openssl中的头文件位置和库文件位置。

 

 2、在“连接器”选项中的“输入”中填写库的名称,libssl.lib和libcrypto.lib

 

 

3、将OpenSSL文件中bin目录下的libcrpto-1_1.dll和libssl-1_1.dll两个文件拷贝到当前项目的文件下

 

 使用OpenSSL进行单项散列函数计算,以MD5为例

#define _CRT_SECURE_NO_WARNINGS #include #include #include #include void getMD5(const char* str, char* result) { MD5_CTX ctx; MD5_Init(&ctx); MD5_Update(&ctx, str, strlen(str)); unsigned char md[MD5_DIGEST_LENGTH] = { 0 }; MD5_Final(md, &ctx); //转变为16进制 for (int i = 0; i < MD5_DIGEST_LENGTH; ++i) { sprintf(&result[i * 2], "%02x", md[i]); } } int main() { char result[33] = { 0 }; getMD5("hello, md5", result); printf("md5 value: %s\n", result); system("pause"); return 0; }

使用OpenSSL完成消息认证码。消息认证码是为了保障信息没有被篡改,前提是双方要约定好相同的密钥和哈希算法。

以生成消息认证码为例

#define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; int main() { /*unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, const unsigned char *d, size_t n, unsigned char *md, unsigned int *md_len);*/ //约定好的密钥 char key[] = "ad12ni12"; //原始数据 char data[] = "hello world how are you"; unsigned char md[SHA256_DIGEST_LENGTH] = { 0 }; //存放16进制的消息认证码 char mdbuf[2 * SHA256_DIGEST_LENGTH + 1] = { 0 }; unsigned int len = 0; //参数1:约定好的算法;参数2:密钥;参数3:密钥长度;参数4:原始数据;参数5:原始数据的长度 //参数6:传出的认证码,参数7:传出参数,认证码的长度 HMAC(EVP_sha256(), key, strlen(key),(unsigned char *) data, strlen(data), md, &len); //将消息认证码转换成16进制 for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) { sprintf(&mdbuf[2 * i], "%02x", md[i]); } cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3