在C++中,可以使用第三方库来实现MD5加密和SHA加密。以下是使用openssl
库实现MD5和SHA-256加密的示例代码:
#include <iostream>
#include <openssl/md5.h>
#include <openssl/sha.h>
#include <cstring>
std::string md5(std::string input) {
unsigned char digest[MD5_DIGEST_LENGTH];
MD5((unsigned char*)input.c_str(), input.length(), digest);
char mdString[(MD5_DIGEST_LENGTH * 2) + 1];
for(int i = 0; i < MD5_DIGEST_LENGTH; i++)
sprintf(&mdString[i*2], "%02x", (unsigned int)digest[i]);
return std::string(mdString);
}
std::string sha256(std::string input) {
unsigned char digest[SHA256_DIGEST_LENGTH];
SHA256((unsigned const char*)input.c_str(), input.length(), digest);
char mdString[(SHA256_DIGEST_LENGTH * 2) + 1];
for(int i = 0; i < SHA256_DIGEST_LENGTH; i++)
sprintf(&mdString[i*2], "%02x", (unsigned int)digest[i]);
return std::string(mdString);
}
int main() {
std::string input = "Hello, world!";
std::string md5hash = md5(input);
std::string sha256hash = sha256(input);
std::cout << "MD5 hash: " << md5hash << std::endl;
std::cout << "SHA-256 hash: " << sha256hash << std::endl;
return 0;
}
在上面的示例中,md5
函数和sha256
函数分别用于计算输入字符串的MD5和SHA-256哈希值。main
函数中演示了如何调用这两个函数并输出哈希值。
需要注意的是,MD5虽然在过去被广泛使用,但现在已经不推荐使用,因为其存在安全性弱点。SHA-256是目前被广泛认可的安全哈希函数之一。如果需要更高级别的安全性,可以使用更长的SHA哈希函数,如SHA-384或SHA-512。