Подбор пароль к хэшу?
Я не могу додуматься как сделать расшифровщик хэшей, на некоторых сайтах есть.
Хеш невозможно расшифровать. Для этого используют словари известных хешей.
Храните в базе данных и используйте поиск.
Для начала не файл, а база.

Делаете таблицу 'rainbow_table'

CREATE TABLE `rainbow_table` (
  `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `pass` VARCHAR(255) NOT NULL COLLATE 'utf8mb4_unicode_ci',
  `hash` CHAR(32) NOT NULL COLLATE 'utf8mb4_unicode_ci',
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `hash_index` (`hash`) USING BTREE
)
COLLATE='utf8mb4_unicode_ci'
ENGINE=InnoDB;

Заполняете ее готовыми паролями и их хешами. На столбик hash повесьте индекс.

И потом вам останется только сделать выборку из базы

$config = [
  'db_name' => 'md5hashes',
  'db_host' => '127.0.0.1',
  'db_user' => 'mysql',
  'db_pass' => 'mysql',
];

$hash = $_POST['hash'];

$dsn = 'mysql:dbname='.$config['db_name'].';host='.$config['db_host'];
$pdo = new PDO($dsn, $config['db_user'], $config['db_pass']);
$stmt = $pdo->prepare('SELECT * FROM `rainbow_table` WHERE `hash` = :hash')
$stmt->execute(['hash' => $hash]);
if ($stmt->rowCount() > 0) {
  $row = $stmt->fetch(PDO::FETCH_ASSOC);
  echo 'Хэш найден: '.$row['pass'];
} else {
  echo 'Хэш не найден';
}

Для того, чтобы заполнить таблицу создайте файл words.txt, в котором на каждой строке будет один пароль

$dsn = 'mysql:dbname='.$config['db_name'].';host='.$config['db_host'];
$pdo = new PDO($dsn, $config['db_user'], $config['db_pass']);
$stmt = $pdo->prepare('INSERT INTO `rainbow_table` (`pass`, `hash`) VALUES (:pass, :hash)');

$fp = fopen('words.txt', 'r');
if ($fp) {
  while (($buffer = fgets($fp)) !== false) {
    $stmt->execute(['pass' => $buffer, 'hash' => md5($buffer)]);
  }
  if (!feof($fp)) {
    echo "Ошибка: fgets() неожиданно потерпел неудачу\n";
  }
  fclose($fp);
}