C++下载文件(最简单办法,没有之一)(只适用于windows)

WinAPI大法好~

#include<windows.h>
#include<urlmon.h>
#pragma comment(lib,"urlmon.lib")
int main()
{
    URLDownloadToFile(NULL,"https://www.baidu.com/img/baidu_jgylogo3.gif","baidu_jgylogo3.gif",0,NULL);
    //https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/ms775123(v=vs.85)
    return 0;
}

其中函数第二个参数是URL,第三个是绝对或相对路径。亲测可用^_^

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows平台上使用C语言编写程序进行OpenSSL验签的步骤如下: 1. 首先,你需要安装并配置OpenSSL库和开发环境。你可以从OpenSSL的官方网站下载适用Windows平台的二进制安装包,并将其安装到你的计算机上。同时,确保你已经正确地设置了开发环境,使得你可以使用该库进行编译和链接。 2. 在你的C代码中,你需要包含OpenSSL的头文件,并链接对应的库文件。可以使用以下代码包含OpenSSL的头文件: ```c #include <openssl/evp.h> ``` 在链接选项中添加对应的库文件,例如: ```c -lssl -lcrypto ``` 3. 定义一些变量来存储签名和待验签的数据。例如: ```c const char *pub_key_file = "public_key.pem"; // 公钥文件 const char *data_to_verify_file = "data_to_verify.txt"; // 待验签文件 EVP_PKEY *pub_key = NULL; // 公钥指针 unsigned char *signature = NULL; // 签名数据 unsigned int signature_len = 0; // 签名数据长度 unsigned char *data_to_verify = NULL; // 待验签数据 unsigned int data_to_verify_len = 0; // 待验签数据长度 ``` 4. 加载公钥文件并获取公钥。可以使用以下代码: ```c FILE *pub_key_file_ptr = NULL; pub_key_file_ptr = fopen(pub_key_file, "rb"); pub_key = PEM_read_PUBKEY(pub_key_file_ptr, NULL, NULL, NULL); fclose(pub_key_file_ptr); ``` 5. 加载待验签文件和签名数据。可以使用以下代码: ```c FILE *data_to_verify_file_ptr = NULL; size_t read_data_len = 0; data_to_verify_file_ptr = fopen(data_to_verify_file, "rb"); fseek(data_to_verify_file_ptr, 0, SEEK_END); data_to_verify_len = ftell(data_to_verify_file_ptr); fseek(data_to_verify_file_ptr, 0, SEEK_SET); data_to_verify = (unsigned char *)malloc(data_to_verify_len); read_data_len = fread(data_to_verify, 1, data_to_verify_len, data_to_verify_file_ptr); fclose(data_to_verify_file_ptr); signature = (unsigned char *)malloc(signature_len); /* 在这里加载签名数据到 signature 变量中 */ ``` 6. 使用OpenSSL的验证函数验证签名。可以使用以下代码: ```c EVP_MD_CTX *md_ctx = EVP_MD_CTX_new(); int result = 0; EVP_VerifyInit(md_ctx, EVP_sha256()); EVP_VerifyUpdate(md_ctx, data_to_verify, data_to_verify_len); result = EVP_VerifyFinal(md_ctx, signature, signature_len, pub_key); EVP_MD_CTX_free(md_ctx); if (result == 1) { printf("验签成功!\n"); } else { printf("验签失败!\n"); } ``` 7. 最后,记得释放已分配的内存。例如: ```c free(signature); free(data_to_verify); EVP_PKEY_free(pub_key); ``` 这样,你就可以在Windows平台上使用C语言编写程序进行OpenSSL验签了。以上是一个简单的示例,你可以根据自己的实际需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值