1 使用Crypto++对字符串进行md5加密
使用Crypto++计算字符串的md的md5值,需要使用到Crypto++以下类:
- StringSource: 用于从字符串或二进制数据中读取数据
- HashFilter: 表示一个用于计算哈希的过滤器。它接受一个哈希函数作为参数,这里是
md5
- md5: 用于计算输入数据的 MD5 哈希值
- HexEncoder: 用于将二进制数据编码为十六进制表示
- StringSink(dst 或 digest): 用于将数据写入字符串。在这里,它将最终的哈希值以十六进制字符串的形式写入到
dst
或digest
中
示例代码如下
#include <iostream>
#include "md5.h"
#include "files.h"
#include "hex.h"
int main()
{
std::string input_str = "123456789";
CryptoPP::Weak1::MD5 md5;
std::string input_str_md5 = "";
CryptoPP::StringSource(
input_str.c_str(), true,
new CryptoPP::HashFilter(
md5,
new CryptoPP::HexEncoder(new CryptoPP::StringSink(input_str_md5)))
);
std::cout << "input str md5: " << input_str_md5 << std::endl;
return 0;
}
2 使用Crypto++对字符串进行md5校验
md5校验经常用于比较登录密码是否一致,比如在用户注册时将用户的密码进行md5加密存入到数据库中,然后在用户登录时将用户输入的密码进行md5加密然后与数据库中的md5进行比较,如果一致则说明密码正确。
示例代码如下:
#include <iostream>
#include "md5.h"
#include "files.h"
#include "hex.h"
std::string CalculStringMd5(const std::string& input_str)
{
CryptoPP::Weak1::MD5 md5;
std::string input_str_md5 = "";
CryptoPP::StringSource(
input_str.c_str(), true,
new CryptoPP::HashFilter(
md5,
new CryptoPP::HexEncoder(new CryptoPP::StringSink(input_str_md5)))
);
return input_str_md5;
}
int main()
{
std::string passwd1 = "123456789";
std::string passwd2 = "123456789";
std::string passwd3 = "12345678910";
std::string passwd1_md5 = CalculStringMd5(passwd1);
std::string passwd2_md5 = CalculStringMd5(passwd2);
std::string passwd3_md5 = CalculStringMd5(passwd3);
if (passwd1_md5.compare(passwd3_md5) == 0)
{
std::cout << "passwd1 is equal to passwd3" << std::endl;
}
else
{
std::cout << "passwd1 is not equal to passwd3" << std::endl;
}
if (passwd1_md5.compare(passwd2_md5) == 0)
{
std::cout << "passwd1 is equal to passwd2" << std::endl;
}
else
{
std::cout << "passwd1 is not equal to passwd2" << std::endl;
}
return 0;
}
程序输出
passwd1 is not equal to passwd3
passwd1 is equal to passwd2
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:C++ – 使用Crypto++对字符串进行md5加密和md5校验
原文链接:https://www.stubbornhuang.com/2944/
发布于:2024年01月08日 11:47:55
修改于:2024年01月08日 11:47:55
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
50