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 打开,先编译 Debug 版本:
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;
- }
运行结果如下:


crypt 算法
概述
基本特性
bcrypt.cpp 编译
概述
下载源码
生成 Visual Studio 工程
bcrypt.cpp 库使用
项目设置
代码示例
共有 0 条评论