哈希算法(Hash Algorithm)是一种将任意长度的数据映射到固定长度输出的单向函数
#include <iostream>
#include <string>
#include <openssl/sha.h>
std::string sha256(const std::string &input) {
unsigned char hash[SHA256_DIGEST_LENGTH];
SHA256_CTX sha256;
SHA256_Init(&sha256);
SHA256_Update(&sha256, input.c_str(), input.size());
SHA256_Final(hash, &sha256);
std::stringstream ss;
for (int i = 0; i < SHA256_DIGEST_LENGTH; ++i) {
ss << std::hex << std::setw(2) << std::setfill('0') << static_cast<int>(hash[i]);
}
return ss.str();
}
int main() {
std::string password = "my_password";
std::string hashed_password = sha256(password);
std::cout << "Hashed password: " << hashed_password << std::endl;
return 0;
}
#include <iostream>
#include <fstream>
#include <string>
#include <openssl/md5.h>
std::string md5(const std::string &input) {
unsigned char digest[MD5_DIGEST_LENGTH];
MD5((unsigned char *)input.c_str(), input.size(), (unsigned char *)&digest);
std::stringstream ss;
for (int i = 0; i < MD5_DIGEST_LENGTH; ++i) {
ss << std::hex << std::setw(2) << std::setfill('0') << static_cast<int>(digest[i]);
}
return ss.str();
}
int main() {
std::ifstream file("example.txt", std::ios::binary);
if (!file) {
std::cerr << "Error opening file" << std::endl;
return 1;
}
std::string file_data((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
std::string file_hash = md5(file_data);
std::cout << "File MD5 hash: " << file_hash << std::endl;
return 0;
}
总之,哈希算法在C++加密中有广泛的应用,可以用于密码存储、文件完整性检查和数据一致性等方面。在实际应用中,需要根据具体需求选择合适的哈希算法,并确保使用安全的实现方式。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。