使用开源的openssl的md5头文件,实现对于文件的md5代码
生活随笔
收集整理的這篇文章主要介紹了
使用开源的openssl的md5头文件,实现对于文件的md5代码
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
需要安裝openssl的庫(kù)
- sudo apt-get install openssl
- sudo apt-get install libssl-dev
- 參考鏈接
代碼
#include "openssl/md5.h" #include <iostream> #include <fstream> #include <iomanip>//#define MAX_DATA_BUFF = 1024; //#define MD5_LENGTH = 16 char* get_file_md5(const char * path){char *out = (char *)malloc(33); //輸出std::ifstream file(path,std::ios::in|std::ios::binary);//打開(kāi)文件unsigned char MD5_result[16];do {if(file.fail()){std::cout<<"open file failure!"<<std::endl;break;}MD5_CTX md5_ctx;MD5_Init(&md5_ctx);char data_Buff[1024];while (!file.eof()){file.read(data_Buff,1024);//讀取文件int length = file.gcount();if (length){MD5_Update(&md5_ctx,data_Buff,length);//將當(dāng)前文件加入并且更新MD5}}MD5_Final(MD5_result,&md5_ctx); //獲取MD5for (int i = 0; i < 16; i++) { //將md5以16進(jìn)制輸出snprintf(&(out[i*2]),16*2,"%02x",(unsigned int)MD5_result[i]);}}while (false);return out; }調(diào)用簡(jiǎn)單流程
char *output = get_file_md5(original_backup_file.c_str());//original_backup_file為文件的名字std::cout << "md5:%s\n"<< output << std::endl;free(output);測(cè)試MD5的簡(jiǎn)單用例
?
// std::ostringstream sout; // sout << std::hex<<std::setfill('0'); // for(long long c:md5){ // sout << std::setw(2) << (long long )c; // } // char mdString[33]; // for(int i = 0; i < 16; i++) // sprintf(&mdString[i*2], "%02x", (unsigned int)md5[i]); // // std::cout << mdString << std::endl;參考鏈接
- OpenSSL - 文件和字符MD5加密實(shí)現(xiàn)
- MD5驗(yàn)證文件完整性 C++
- How to create a md5 hash of a string in C?
總結(jié)
以上是生活随笔為你收集整理的使用开源的openssl的md5头文件,实现对于文件的md5代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 安装ipfs-http-client出现
- 下一篇: java 遍历100以内的偶数,偶数的和