【发布时间】:2017-02-03 11:50:55
【问题描述】:
我使用 Apache 库为 Linux 中的两个应用程序提供哈希密码。其中一个是 Pure-Ftp,另一个是我的应用程序。我在 Pure-Ftp passwd 文件中手动保存散列密码,它工作正常,用户可以使用给定用户/密码的 Ftp。
在我的应用程序中,我想验证用户,但没有任何 checkPassword(clearTextPassword, hashedPassword) 功能。
import org.apache.commons.codec.digest.Crypt;
...
...
...
String hashedValue = Crypt.crypt(clearTextPassword);
..
【问题讨论】:
-
不,您需要编写该代码。您将散列密码存储在哪里?真的不清楚你在这里要求什么。 (目前尚不清楚您的密码和 FTP 之间有什么关系......)此外,我个人会避免使用 SHA-1 作为任何严肃工作的密码哈希。
-
仅使用散列函数是不够的,仅添加盐对提高安全性无济于事。而是使用随机盐在 HMAC 上迭代大约 100 毫秒,然后将盐与哈希一起保存。使用
PBKDF2(又名Rfc2898DeriveBytes)、password_hash/password_verify、Bcrypt等函数和类似函数。关键是让攻击者花费大量时间通过蛮力寻找密码。保护您的用户很重要,请使用安全的密码方法。 -
我认为 SHA1 512 是安全的,不是吗?我不想使用 bash 功能。我想在Java中生成一次哈希密码,然后将其保存在数据库和Pure-Ftp的passwd文件中。
标签: java linux authentication sha1 pureftpd