推荐使用:Bcrypt Java库及CLI工具
项目介绍
Bcrypt Java库及CLI工具是一个基于OpenBSD Blowfish密码哈希算法的实现,源自于Niels Provos和David Mazieres的论文《A Future-Adaptable Password Scheme》。该项目核心基于jBcrypt,经过大量重构、现代化改进和更新,支持所有常见版本,并具有安全敏感的API。此外,它还经过了广泛的测试向量和参考实现的测试。
项目技术分析
核心技术
- Bcrypt算法:基于OpenBSD Blowfish密码哈希算法,具有良好的安全性和未来适应性。
- Java 7兼容:代码编译目标为Java 7,确保兼容大多数Android版本和标准Java应用。
- 全面测试:通过广泛的测试向量和参考实现进行验证,确保代码的可靠性和安全性。
技术亮点
- 版本支持:支持多种Bcrypt版本,包括$2a$、$2y$和$2b$等。
- 安全API:提供安全敏感的API,支持
char[]
和byte[]
作为输入输出参数,避免使用不可变的String
。 - 严格验证:支持严格版本的哈希验证,确保哈希的版本一致性。
- 长密码处理:提供长密码处理策略,如截断或使用SHA-512哈希,以适应Blowfish算法的限制。
- 自定义盐和随机数生成器:允许用户提供自定义盐或使用自定义的加密安全伪随机数生成器。
项目及技术应用场景
应用场景
- 密码存储:适用于需要安全存储用户密码的应用,如Web应用、移动应用等。
- 身份验证:在用户登录时,用于验证用户输入的密码与存储的哈希是否匹配。
- CLI工具:提供命令行界面工具,方便开发者和系统管理员在命令行环境下进行密码哈希和验证操作。
适用平台
- Java应用:适用于任何基于Java的应用程序。
- Android应用:由于兼容Java 7,适用于大多数Android版本。
- 命令行工具:适用于需要在命令行环境下进行密码哈希和验证的场景。
项目特点
安全性
- 安全敏感API:提供安全敏感的API设计,避免使用不可变的
String
,确保密码数据的安全性。 - 全面测试:经过广泛的测试向量和参考实现验证,确保代码的安全性和可靠性。
灵活性
- 版本支持:支持多种Bcrypt版本,满足不同环境和需求。
- 自定义选项:允许用户提供自定义盐、使用自定义的随机数生成器,以及选择不同的长密码处理策略。
易用性
- 简单示例:提供简单易懂的示例代码,帮助用户快速上手。
- CLI工具:提供命令行界面工具,方便用户在命令行环境下进行操作。
兼容性
- Java 7兼容:确保兼容大多数Android版本和标准Java应用。
- Maven Central:部署在Maven Central,方便用户通过Maven或Gradle进行依赖管理。
结语
Bcrypt Java库及CLI工具是一个功能强大、安全可靠的密码哈希解决方案,适用于多种应用场景。无论您是开发Web应用、移动应用还是需要在命令行环境下进行密码操作,Bcrypt Java库都能为您提供强大的支持。立即尝试,提升您的应用安全性!
项目地址:Bcrypt Java Library and CLI Tool
Maven依赖:
<dependency>
<groupId>at.favre.lib</groupId>
<artifactId>bcrypt</artifactId>
<version>{latest-version}</version>
</dependency>
Gradle依赖:
implementation group: 'at.favre.lib', name: 'bcrypt', version: '{latest-version}'
CLI工具使用示例:
java -jar bcrypt-cli.jar 'mySecretPw' -b 12
java -jar bcrypt-cli.jar 'mySecretP