Разработчик и пентестер из Positive Technologies Арсений Шароглазов пояснил, почему зашифрованный очень длинным паролем ZIP-файл с использованием алгоритма шифрования AES-256 может в итоге открываться с помощью двух, причём на первый взгляд разных, но правильных паролей.
Это происходит по причине того, что Zip использует стандарт формирования ключа на основе пароля PBKDF2, который хэширует ввод, если он слишком велик. Этот хэш (в виде необработанных байтов) становится фактическим вторым паролем, но на самом деле представляет собой ASCII-представление хэша SHA-1 более длинного пароля.
В данном случае при шифровании или расшифровке файла процесс хеширования происходит только в том случае, если длина пароля превышает 64 символа, а более короткие пароли не будут хэшироваться ни на этапе сжатия, ни на этапе распаковки Zip-архива.