‪TYPO3CMS  ‪main
Md5PasswordHashTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\Attributes\Test;
22 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
23 
24 final class ‪Md5PasswordHashTest extends UnitTestCase
25 {
26  #[Test]
28  {
29  self::assertNull((new ‪Md5PasswordHash())->getHashedPassword(''));
30  }
31 
32  #[Test]
34  {
35  self::assertNotNull((new ‪Md5PasswordHash())->getHashedPassword('a'));
36  }
37 
38  #[Test]
40  {
41  $password = 'password';
42  $subject = new ‪Md5PasswordHash();
43  $saltedHashPassword = $subject->getHashedPassword($password);
44  self::assertTrue($subject->isValidSaltedPW($saltedHashPassword));
45  }
46 
53  #[Test]
55  {
56  $password = 'password';
57  $saltedHashPassword = '$1$GNu9HdMt$RwkPb28pce4nXZfnplVZY/';
58  self::assertTrue((new ‪Md5PasswordHash())->checkPassword($password, $saltedHashPassword));
59  }
60 
64  #[Test]
66  {
67  $password = 'password';
68  $saltedHashPassword = '$1$GNu9HdMt$RwkPb28pce4nXZfnplVZY';
69  self::assertFalse((new ‪Md5PasswordHash())->checkPassword($password, $saltedHashPassword));
70  }
71 
78  #[Test]
80  {
81  $password = 'aEjOtY';
82  $subject = new ‪Md5PasswordHash();
83  $saltedHashPassword = $subject->getHashedPassword($password);
84  self::assertTrue($subject->checkPassword($password, $saltedHashPassword));
85  }
86 
93  #[Test]
95  {
96  $password = '01369';
97  $subject = new ‪Md5PasswordHash();
98  $saltedHashPassword = $subject->getHashedPassword($password);
99  self::assertTrue($subject->checkPassword($password, $saltedHashPassword));
100  }
101 
108  #[Test]
110  {
111  $password = ' !"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~';
112  $subject = new ‪Md5PasswordHash();
113  $saltedHashPassword = $subject->getHashedPassword($password);
114  self::assertTrue($subject->checkPassword($password, $saltedHashPassword));
115  }
116 
123  #[Test]
125  {
126  $password = '';
127  for ($i = 160; $i <= 191; $i++) {
128  $password .= chr($i);
129  }
130  $password .= chr(215) . chr(247);
131  $subject = new ‪Md5PasswordHash();
132  $saltedHashPassword = $subject->getHashedPassword($password);
133  self::assertTrue($subject->checkPassword($password, $saltedHashPassword));
134  }
135 
142  #[Test]
144  {
145  $password = '';
146  for ($i = 192; $i <= 214; $i++) {
147  $password .= chr($i);
148  }
149  for ($i = 216; $i <= 246; $i++) {
150  $password .= chr($i);
151  }
152  for ($i = 248; $i <= 255; $i++) {
153  $password .= chr($i);
154  }
155  $subject = new ‪Md5PasswordHash();
156  $saltedHashPassword = $subject->getHashedPassword($password);
157  self::assertTrue($subject->checkPassword($password, $saltedHashPassword));
158  }
159 
160  #[Test]
162  {
163  $password = 'password';
164  $password1 = $password . 'INVALID';
165  $subject = new ‪Md5PasswordHash();
166  $saltedHashPassword = $subject->getHashedPassword($password);
167  self::assertFalse($subject->checkPassword($password1, $saltedHashPassword));
168  }
169 
170  #[Test]
171  public function ‪isHashUpdateNeededReturnsFalse(): void
172  {
173  $password = 'password';
174  $subject = new ‪Md5PasswordHash();
175  $saltedHashPassword = $subject->getHashedPassword($password);
176  self::assertFalse($subject->isHashUpdateNeeded($saltedHashPassword));
177  }
178 }
‪TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing\Md5PasswordHashTest\checkPasswordReturnsTrueWithValidNumericCharClassPassword
‪checkPasswordReturnsTrueWithValidNumericCharClassPassword()
Definition: Md5PasswordHashTest.php:94
‪TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing\Md5PasswordHashTest\checkPasswordReturnsTrueWithValidAsciiSpecialCharClassPassword
‪checkPasswordReturnsTrueWithValidAsciiSpecialCharClassPassword()
Definition: Md5PasswordHashTest.php:109
‪TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing\Md5PasswordHashTest\checkPasswordReturnsFalseWithNonValidPassword
‪checkPasswordReturnsFalseWithNonValidPassword()
Definition: Md5PasswordHashTest.php:161
‪TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing\Md5PasswordHashTest\checkPasswordReturnsTrueWithValidLatin1SpecialCharClassPassword
‪checkPasswordReturnsTrueWithValidLatin1SpecialCharClassPassword()
Definition: Md5PasswordHashTest.php:124
‪TYPO3\CMS\Core\Crypto\PasswordHashing\Md5PasswordHash
Definition: Md5PasswordHash.php:31
‪TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing\Md5PasswordHashTest\checkPasswordReturnsTrueWithValidAlphaCharClassPassword
‪checkPasswordReturnsTrueWithValidAlphaCharClassPassword()
Definition: Md5PasswordHashTest.php:79
‪TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing\Md5PasswordHashTest
Definition: Md5PasswordHashTest.php:25
‪TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing\Md5PasswordHashTest\isHashUpdateNeededReturnsFalse
‪isHashUpdateNeededReturnsFalse()
Definition: Md5PasswordHashTest.php:171
‪TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing\Md5PasswordHashTest\getHashedPasswordReturnsNotNullWithNonEmptyPassword
‪getHashedPasswordReturnsNotNullWithNonEmptyPassword()
Definition: Md5PasswordHashTest.php:33
‪TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing\Md5PasswordHashTest\getHashedPasswordCreatesAHashThatValidates
‪getHashedPasswordCreatesAHashThatValidates()
Definition: Md5PasswordHashTest.php:39
‪TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing\Md5PasswordHashTest\checkPasswordReturnsFalseWithBrokenHash
‪checkPasswordReturnsFalseWithBrokenHash()
Definition: Md5PasswordHashTest.php:65
‪TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing\Md5PasswordHashTest\checkPasswordReturnsTrueWithValidAlphaCharClassPasswordAndFixedHash
‪checkPasswordReturnsTrueWithValidAlphaCharClassPasswordAndFixedHash()
Definition: Md5PasswordHashTest.php:54
‪TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing\Md5PasswordHashTest\checkPasswordReturnsTrueWithValidLatin1UmlautCharClassPassword
‪checkPasswordReturnsTrueWithValidLatin1UmlautCharClassPassword()
Definition: Md5PasswordHashTest.php:143
‪TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing\Md5PasswordHashTest\getHashedPasswordReturnsNullWithEmptyPassword
‪getHashedPasswordReturnsNullWithEmptyPassword()
Definition: Md5PasswordHashTest.php:27
‪TYPO3\CMS\Core\Tests\Unit\Crypto\PasswordHashing
Definition: Argon2idPasswordHashTest.php:18