1: <?php
2: /**
3: * CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
4: * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
5: *
6: * Licensed under The MIT License
7: * For full copyright and license information, please see the LICENSE.txt
8: * Redistributions of files must retain the above copyright notice.
9: *
10: * @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
11: * @link https://cakephp.org CakePHP(tm) Project
12: * @since 3.0.0
13: * @license https://opensource.org/licenses/mit-license.php MIT License
14: */
15: namespace Cake\Auth;
16:
17: use Cake\Core\Configure;
18: use Cake\Error\Debugger;
19: use Cake\Utility\Security;
20:
21: /**
22: * Password hashing class that use weak hashing algorithms. This class is
23: * intended only to be used with legacy databases where passwords have
24: * not been migrated to a stronger algorithm yet.
25: */
26: class WeakPasswordHasher extends AbstractPasswordHasher
27: {
28:
29: /**
30: * Default config for this object.
31: *
32: * @var array
33: */
34: protected $_defaultConfig = [
35: 'hashType' => null
36: ];
37:
38: /**
39: * {@inheritDoc}
40: */
41: public function __construct(array $config = [])
42: {
43: if (Configure::read('debug')) {
44: Debugger::checkSecurityKeys();
45: }
46:
47: parent::__construct($config);
48: }
49:
50: /**
51: * Generates password hash.
52: *
53: * @param string $password Plain text password to hash.
54: * @return string Password hash
55: */
56: public function hash($password)
57: {
58: return Security::hash($password, $this->_config['hashType'], true);
59: }
60:
61: /**
62: * Check hash. Generate hash for user provided password and check against existing hash.
63: *
64: * @param string $password Plain text password to hash.
65: * @param string $hashedPassword Existing hashed password.
66: * @return bool True if hashes match else false.
67: */
68: public function check($password, $hashedPassword)
69: {
70: return $hashedPassword === $this->hash($password);
71: }
72: }
73: