在 VertX 中使用 Bcrypt 提高性能

Improve performance using Bcrypt in VertX

我正在 vertx 中创建一个注册方法,它使用 Bcrypt 对数据库中的密码进行编码。 我的问题来自于使用 BCrypt 编码密码时性能低下。

当我使用时:
- Bcrypt 我的查询大约需要 ~1200ms
- Whitout Bcrypt ~220ms

那么我可以做些什么来提高性能?在 VertX 中是否有另一种编码密码的方法?

i'm using Bcrypt (http://www.mindrot.org/projects/jBCrypt/) in vertx.

老实说,这可能是最好的方法。 BCrypt 做了更好的散列编码。更快的算法几乎没有那么好,当然也不能证明你正在制作的任何系统。但是,是的,您可以使用 MD5,速度会快得多。

正如您所说:那不是 Vert.x issue/problem。 BCrypt 算法需要 X 时间才能 encode/encrypt 一个给定值——而且它是故意的。

我想您可以利用 Vert.x 功能并让 "worker verticles" 的 N 个实例执行加密工作。同样,时间 "won't shrink",但你将有 "some dedicated guys" 只是为了这样做——你总是可以根据需要调整实例的数量。也许这太多了,但我只是把它扔掉以防你没有想过它。

此外,我认为使用 BCrypt 是(其中一种)方法;这是一次性操作,稍后在 "checking" 给定值上它不是那么耗时。此外,如果您使用适当的 salt 大小,jadda,jadda,与其他(包括散列)算法相比,它将为您提供 better/strong 安全性。

请注意,BCrypt 是故意变慢的(参见此处的示例:Bcrypt for password hashing because it is slow?),因此它不是 "bug" 而是一项功能。

(如 link 中所述,缓慢增加了额外的安全性 - 暴力破解密码的速度较慢)

因此,在希望 BCrypt 密码加密速度快之前,您真的应该三思。