C++ 好用的密码哈希库 -- bcrypt.cpp

在软件开发中,存储用户密码是一个非常重要的问题。
如果直接将用户密码以明文形式存储在数据库中,那么一旦数据库被黑客攻击,用户的密码就会泄露。
为了避免这种情况,通常会使用密码散列函数将用户密码转换为散列值,然后将散列值存储在数据库中。


当用户登录时,将用户输入的密码再次进行散列,然后与数据库中的散列值进行比较,以验证用户身份。

crypt 算法

crypt 被设计为一种用于密码散列的算法,特别适用于密码存储,因为它可以通过增加计算复杂度来抵御暴力破解攻击。

bcrypt.cpp

概述

bcrypt.cpp 是一个 C++ 的第三方开发库,用于实现 bcrypt 加密算法,它是一个 head-only 的库。
bcrypt.cpp 可以用于任何需要存储用户密码的软件系统中

基本特性

  1. 安全性:bcrypt 是一个被广泛认为是安全的密码哈希算法。
  2. 简单性:该库的 API 非常简单,只需几个函数调用就可以实现密码的哈希和验证。
  3. 兼容性:支持 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;
}

 

运行结果如下:


转自微信公众号:编程猿来如此

文章版权归原作者所有或来自互联网,未经允许请勿转载。如有侵权请联系我删除,谢谢!
THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录