C++ 好用的密码哈希库 -- bcrypt.cpp
文章目录[隐藏]
在软件开发中,存储用户密码是一个非常重要的问题。
如果直接将用户密码以明文形式存储在数据库中,那么一旦数据库被黑客攻击,用户的密码就会泄露。
为了避免这种情况,通常会使用密码散列函数将用户密码转换为散列值,然后将散列值存储在数据库中。
当用户登录时,将用户输入的密码再次进行散列,然后与数据库中的散列值进行比较,以验证用户身份。
crypt 算法
crypt 被设计为一种用于密码散列的算法,特别适用于密码存储,因为它可以通过增加计算复杂度来抵御暴力破解攻击。
bcrypt.cpp
概述
bcrypt.cpp 是一个 C++ 的第三方开发库,用于实现 bcrypt 加密算法,它是一个 head-only 的库。
bcrypt.cpp 可以用于任何需要存储用户密码的软件系统中
基本特性
-
安全性:bcrypt 是一个被广泛认为是安全的密码哈希算法。 -
简单性:该库的 API 非常简单,只需几个函数调用就可以实现密码的哈希和验证。 -
兼容性:支持 C++11 及以上版本,可以在多种平台上使用。
bcrypt.cpp 编译
概述
bcrypt.cpp 是一个头文件只读库,只需包含头文件就可以在项目中使用。
也可以编译成一个静态库使用。
下载源码
bcrypt.cpp 源码下载地址:https://github.com/hilch/Bcrypt.cpp
生成 Visual Studio 工程
打开 cmake,设置源码路径及 build 路径:
配置 Visual Studio 版本:
点击 Generate 按钮生成工程文件:
然后用 Visual Studio 打开,先编译 Debug 版本:
继续编译 Release 版本:
编译结果在当前的 build 目录中:
bcrypt.cpp 库使用
项目设置
头文件引用
在项目设置中添加头文件引用:
库文件引用
在项目设置中添加库文件查找路径:
添加要引用的库文件:
代码示例
下面是一个简单的 bcrypt.cpp 库使用示例:
#include "bcrypt/BCrypt.hpp"
int main() {
// 加密用户密码
std::string password = "my_password";
std::string hashed_password = BCrypt::generateHash(password);
std::cout << "Hashed password: " << hashed_password << std::endl;
// 验证用户密码
std::string input_password = "my_password";
bool result = BCrypt::validatePassword(input_password, hashed_password);
std::cout << "Validation result: " << (result ? "success" : "failure") << std::endl;
return 0;
}
运行结果如下:
转自微信公众号:编程猿来如此
共有 0 条评论