PBEKeySpec, на что влияют параметры iterationCount и keyLength?

Включение в java-шифрование и хеширование мира Я вижу примеры конструктора для класса PBEKeySpec с различными значениями для параметров iterationCount и keyLength. Ничто, кажется, не объясняет, что эти параметры влияют или имеют значение.

Я предполагаю, что keyLength - это то, как долго ключ будет таким 32-битным шифрованием, будет принимать значение 32 для длины ключа, но это предположение ошибочно. Мое предположение для iterationCount - это количество раз, когда каждый char зашифрован, опять же не чувствуя любви в этом предположении.

Приветствуются ссылки на информацию или объяснение.

Ответ 1

Число итераций - это количество раз, когда пароль хэшируется во время вывода симметричного ключа. Чем выше число, тем труднее всего переборщить ключ. Он используется вместе с солью, которая используется для предотвращения атак с использованием радужных столов.

Длина ключа - это длина производного симметричного ключа. Клавиша DESede может быть длиной 128 или 192 бит (включая биты четности). Ключ AES может иметь длину 128, 192 или 256 бит. Проблема заключается в том, что API не указан в отношении длины ключа (обычно это бит и включает информацию о четности в Java API).

Функция деривации ключа обычно просто выводит "достаточные" случайные биты, поэтому почему вы все еще можете указать требуемый размер ключа.

Примечание: для функции PBKDF2, для которой обычно используется PBEKeySpec, посмотрите на стандарт в стандарте, стандарты PKCS, как правило, относительно легко читаются.