Path: blob/master/src/infrastructure/util/password/PhabricatorIteratedMD5PasswordHasher.php
12241 views
<?php12final class PhabricatorIteratedMD5PasswordHasher3extends PhabricatorPasswordHasher {45public function getHumanReadableName() {6return pht('Iterated MD5');7}89public function getHashName() {10return 'md5';11}1213public function getHashLength() {14return 32;15}1617public function canHashPasswords() {18return function_exists('md5');19}2021public function getInstallInstructions() {22// This should always be available, but do something useful anyway.23return pht('To use iterated MD5, make the md5() function available.');24}2526public function getStrength() {27return 1.0;28}2930public function getHumanReadableStrength() {31return pht('Okay');32}3334protected function getPasswordHash(PhutilOpaqueEnvelope $envelope) {35$raw_input = $envelope->openEnvelope();3637$hash = $raw_input;38for ($ii = 0; $ii < 1000; $ii++) {39$hash = md5($hash);40}4142return new PhutilOpaqueEnvelope($hash);43}4445}464748