EVP_BytesToKey
Устаревшая функция OpenSSL для превращения пароля в ключ и IV — быстрая, простая и непригодная именно по этим причинам.
Она хеширует пароль и соль, затем снова хеширует предыдущий выход вместе с паролем и солью и склеивает блоки, пока их не хватит и на ключ, и на вектор инициализации. openssl enc использовал её с единственной итерацией, а до OpenSSL 1.1.0 (2016) хешем был MD5. Выходной файл начинается со строки Salted__ и восьми байтов соли, поэтому такие файлы легко узнать в природе.
Одна итерация означает, что атакующий с GPU перебирает миллиарды паролей в секунду. В OpenSSL 1.1.1 в 2018 году появились флаги -pbkdf2 и -iter и предупреждение об «устаревшей выработке ключа». Формат всё равно живёт — в частности, в JavaScript-библиотеке CryptoJS, — потому что никто не хочет ломать совместимость с уже зашифрованными данными.