我正在编写一个包含一些哈希函数的库。

我希望其中一个函数返回散列 (byte[]) 和生成用于散列的随机盐 (byte[])。最用户友好、最直观的方法是什么?

我有一个 C# 版本,它通过返回散列然后将盐作为输出参数传回来工作,这完美地工作,但是 Java 并没有给我输出参数的奢侈。

有什么想法吗?

最佳答案

最优雅的方式当然是将 hash 和 salt 封装在一个类中,并返回这个类的一个实例。

class HashAndSalt {
    private byte[] hash, salt;
    public HashAndSalt(byte[] hash, byte[] salt) {
        this.hash = hash;
        this.salt = salt;
    }

    // access methods goes here
}

选择上述方法的主要原因是在客户端很清楚变量包含什么。如果你返回类似 byte[2][] 的东西,我会一直忘记哈希是在索引 0 还是 1 中。

如果您将字段设为 final,有些人甚至可能会争辩说您可以将它们设为公开并跳过访问方法。

关于java - 在 Java 中传回两个变量的最用户友好的方式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6417143/

10-14 08:55