哈希算法(Hash Algorithm)在C++中有多种应用场景,主要用于数据结构(如哈希表)、密码学、数据完整性校验等领域。以下是一些常见的应用场景:
unordered_map
和unordered_set
等标准库容器实现哈希表。这些容器内部使用哈希算法来计算键的哈希值,以便快速查找、插入和删除操作。#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> age_map;
age_map["Alice"] = 30;
age_map["Bob"] = 25;
age_map["Charlie"] = 35;
std::cout << "Alice's age: " << age_map["Alice"] << std::endl;
return 0;
}
#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') << (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/sha.h>
std::string sha256(const std::string& input) {
// ... (与上面相同的代码)
}
bool verify_file_integrity(const std::string& file_path, const std::string& expected_hash) {
std::ifstream file(file_path, std::ios::binary);
if (!file) {
std::cerr << "Error opening file: " << file_path << std::endl;
return false;
}
std::string file_data((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
std::string computed_hash = sha256(file_data);
return computed_hash == expected_hash;
}
int main() {
std::string file_path = "example.txt";
std::string expected_hash = "expected_hash_value";
if (verify_file_integrity(file_path, expected_hash)) {
std::cout << "File integrity verified." << std::endl;
} else {
std::cout << "File integrity check failed." << std::endl;
}
return 0;
}
这些仅仅是哈希算法在C++中的一些应用场景,实际上哈希算法还有很多其他用途,如缓存键生成、唯一标识符生成等。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。