Во время моего исследования Java-приложения я обнаружил, что следующийInt(64)
функция java.Случайный()
class используется для генерации ключа шифрования.
Размер ключа 16 байт. Я знаю, что этот генератор не рекомендуется, потому что он уязвим. Особенно в этом случае значение каждого байта ключа выбирается из небольшого диапазона от 0x0 до 0x40.
Я уже ознакомился с тем, что можно предсказывать следующие значения – генератора с использованием предыдущих значений. Но в моем случае у meyan нет данных о предыдущих значениях (Ключ зашифрован и у меня нет доступа к его значениям), поэтому здесь речь идет об итерации по значениям ключа. Я не понимаю, как я могу использовать данные о том, что каждое следующее значение зависит от предыдущего (параметр oldseed)?
защищенный интервал следующего (целое количество бит) {
длинный олдсид, некстсид;
Семя AtomicLong = this.seed;
делать {
старое семя = семя.получить();
nextseed = (старое начальное число * множитель + слагаемое) & mask;
} while (!seed.compareAndSet(oldseed, nextseed));
return (int)(nextseed >>> (48 бит));
}
Как уменьшить количество переборов для такого 16-байтового ключа?