小编A.r*_*olo的帖子

使用 Java 摘要生成哈希的时间会变慢

在使用 wildfly 8.2 和 Java 1.7 的生产环境中,我遇到了一个非常奇怪的情况。

情况是,当服务器启动超过 2 周时,登录性能开始下降。我一直在寻找可能表明问题出在哪里的线索。然后经过一些测试,我得出的结论是,问题在于明文插入的密码被加密以与已插入的密码进行比较。

当加密密码的函数被执行时,它需要将近 2 分钟,但是当服务器重新启动时,同样的执行时间不到 30 秒。

加密使用 java.security.MessageDigest 生成哈希。具体使用 SHA-256 迭代 50000 次。知道为什么这个过程会随着时间变慢吗?我正在使用 /dev/urandom 来生成随机数,所以这应该不是问题。

下面是函数代码:

protected byte[] hash(byte[] bytes, byte[] salt, int hashIterations) throws UnknownAlgorithmException {
    MessageDigest digest = getDigest(getAlgorithmName());
    if (salt != null) {
        digest.reset();
        digest.update(salt);
    }
    byte[] hashed = digest.digest(bytes);
    int iterations = hashIterations - 1; //already hashed once above
    //iterate remaining number:
    for (int i = 0; i < iterations; i++) {
        digest.reset();
        hashed = digest.digest(hashed);
    } …
Run Code Online (Sandbox Code Playgroud)

java performance message-digest wildfly

4
推荐指数
1
解决办法
1275
查看次数

标签 统计

java ×1

message-digest ×1

performance ×1

wildfly ×1