首页 / C++ / C++ MD5 Demo
C++ MD5 Demo
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++ MD5 Demo,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2989字,纯文字阅读大概需要5分钟。
内容图文
CppMD5Demo.cpp
#include <iostream> #include <fstream> #include <chrono> #include "MessageDigest5.h"#define INPUT_BUFFER_SIZE 1024 int main(int argc, constchar **argv) { if (argc < 3) std::cout << "Usage: CppMD5Demo [options] <param>\nOptions:\n -string <string>\n -file <filename>" << std::endl; else { if (!std::strcmp(argv[1], "-string")) { const std::chrono::system_clock::time_point &startTime = std::chrono::system_clock::now(); MessageDigest5 md5; md5.appendData(argv[2], std::strlen(argv[2])); const std::string &md5String = md5.result(); const std::chrono::system_clock::time_point &endTime = std::chrono::system_clock::now(); const std::chrono::duration<float, std::ratio<1, 1>> &elapseTime = endTime - startTime; std::cout << "MD5 hashed: " << md5String << ", elapsed time: " << elapseTime.count() << " seconds." << std::endl; } elseif (!std::strcmp(argv[1], "-file")) { std::ifstream ifs(argv[2], std::ifstream::binary); if (ifs.is_open()) { std::cout << "MD5 hashing..." << std::endl; const std::chrono::system_clock::time_point &startTime = std::chrono::system_clock::now(); MessageDigest5 md5; char buffer[INPUT_BUFFER_SIZE]; while (!ifs.eof()) { std::streamsize numberOfCharacters = ifs.read(buffer, INPUT_BUFFER_SIZE).gcount(); md5.appendData(buffer, numberOfCharacters); } const std::string &md5String = md5.result(); const std::chrono::system_clock::time_point &endTime = std::chrono::system_clock::now(); const std::chrono::duration<float, std::ratio<1, 1>> &elapsedTime = endTime - startTime; std::cout << "MD5 hashed: " << md5String << ", elapsed time: " << elapsedTime.count() << " seconds." << std::endl; } else std::cout << "Cannot open file: " << argv[2] << std::endl; } else std::cout << "Usage: CppMD5Demo [options] <param>\nOptions:\n -string <string>\n -file <filename>" << std::endl; } return0; }
MessageDigest5.h
#pragma once #include <string> #include "libmd5/md5.h"class MessageDigest5 { public: MessageDigest5(); void appendData(constchar *data, size_t dataSize); std::string result(); private: md5_state_t md5State; };
MessageDigest5.cpp
#include "MessageDigest5.h" MessageDigest5::MessageDigest5() { md5_init(&md5State); } void MessageDigest5::appendData(constchar *data, size_t dataSize) { md5_append(&md5State, reinterpret_cast<const md5_byte_t *>(data), dataSize); } std::string MessageDigest5::result() { unsigned char digest[16]; md5_finish(&md5State, digest); std::string md5String; char hexBuffer[3]; for (size_t i = 0; i != 16; ++i) { if (digest[i] < 16) sprintf(hexBuffer, "0%x", digest[i]); else sprintf(hexBuffer, "%x", digest[i]); md5String.append(hexBuffer); } return md5String; }
关于libmd5,可参考使用C语言获取字符串或文件的MD5值
原文:https://www.cnblogs.com/buyishi/p/9100257.html
内容总结
以上是互联网集市为您收集整理的C++ MD5 Demo全部内容,希望文章能够帮你解决C++ MD5 Demo所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。