Tag: 盐创作

Java – 生成随机盐不是随机的

我正在尝试在Java中生成一个salt,以便使用散列算法进行安全密码存储。 我正在使用以下代码创建随机盐: private static String getSalt() throws NoSuchAlgorithmException { SecureRandom sr = SecureRandom.getInstance(“SHA1PRNG”); byte[] salt = new byte[16]; sr.nextBytes(salt); System.out.println(salt.toString()); return salt.toString(); } 这应该生成一个完全安全的,随机生成的盐,用于我的散列算法。 然而,当我运行代码时,它每次都会输出相同的盐…表明生成的盐根本不是随机的。 出于明显的安全目的,每个用户都需要一个独特的盐,但是如果我每次创建一个新帐户时都使用这个代码,那么每个用户将拥有相同的盐,从而无法首先使用它。 我的问题是:为什么这会一直给我相同的盐,我该怎么做才能确保每次运行代码时生成的盐都是完全随机的? 编辑: 以为我会包含整个哈希程序的源代码,现在已经修复并正常工作。 这是一个简单的原型,用于模拟在创建帐户时生成哈希值,然后在登录系统时检查密码。 package hashingwstest; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.Random; import java.util.Scanner; public class HashingWSTest { public static void main(String[] args) throws NoSuchAlgorithmException { Scanner […]