Я пытаюсь получить одно и то же значение соли каждый раз в зависимости от значения семени. Вот код, который у меня есть
SecureRandom sr = new SecureRandom(seed.getBytes());
byte[] salt = new byte[32];
sr.nextBytes(salt);
Тем не менее, я продолжаю получать разные значения каждый раз, когда он запускается. Я что-то делаю неправильно, там что-то не хватает?
Обновить:
Хорошо, я попробовал использовать random вместо secureRandom и получить байты с использованием длинного семени, но каждый раз получаю разные значения. Однако, когда я меняю его, чтобы попытаться получить nextInt, я могу получить одинаковые значения.
Random rand = new Random(Long.parseLong(seed, 36));
byte[] salt = new byte[32];
rand.nextBytes(salt);
Правильно ли получается работа с одинаковыми байтами?
Это намеренно. SecureRandom пытается использовать энтрофию, чтобы получить истинную случайность, которая, кстати, может быть дорогой. Он всегда будет возвращать разные значения независимо от того, с какой солью вы начинаете.
Если вы хотите детерминированные значения, используйте Random вместо этого.