我正在编写一个包含一些哈希函数的库。
我希望其中一个函数返回散列 (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/