Verzeichnisstruktur phpBB-3.1.0
- Veröffentlicht
- 27.10.2014
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
bcrypt.php
001 <?php
002 /**
003 *
004 * This file is part of the phpBB Forum Software package.
005 *
006 * @copyright (c) phpBB Limited <https://www.phpbb.com>
007 * @license GNU General Public License, version 2 (GPL-2.0)
008 *
009 * For full copyright and license information, please see
010 * the docs/CREDITS.txt file.
011 *
012 */
013
014 namespace phpbb\passwords\driver;
015
016 class bcrypt extends base
017 {
018 const PREFIX = '$2a$';
019
020 /**
021 * {@inheritdoc}
022 */
023 public function get_prefix()
024 {
025 return self::PREFIX;
026 }
027
028 /**
029 * {@inheritdoc}
030 */
031 public function hash($password, $salt = '')
032 {
033 // The 2x and 2y prefixes of bcrypt might not be supported
034 // Revert to 2a if this is the case
035 $prefix = (!$this->is_supported()) ? '$2a$' : $this->get_prefix();
036
037 // Do not support 8-bit characters with $2a$ bcrypt
038 // Also see http://www.php.net/security/crypt_blowfish.php
039 if ($prefix === self::PREFIX)
040 {
041 if (ord($password[strlen($password)-1]) & 128)
042 {
043 return false;
044 }
045 }
046
047 if ($salt == '')
048 {
049 $salt = $prefix . '10$' . $this->get_random_salt();
050 }
051
052 $hash = crypt($password, $salt);
053 if (strlen($hash) < 60)
054 {
055 return false;
056 }
057 return $hash;
058 }
059
060 /**
061 * {@inheritdoc}
062 */
063 public function check($password, $hash, $user_row = array())
064 {
065 $salt = substr($hash, 0, 29);
066 if (strlen($salt) != 29)
067 {
068 return false;
069 }
070
071 if ($this->helper->string_compare($hash, $this->hash($password, $salt)))
072 {
073 return true;
074 }
075 return false;
076 }
077
078 /**
079 * Get a random salt value with a length of 22 characters
080 *
081 * @return string Salt for password hashing
082 */
083 protected function get_random_salt()
084 {
085 return $this->helper->hash_encode64($this->helper->get_random_salt(22), 22);
086 }
087
088 /**
089 * {@inheritdoc}
090 */
091 public function get_settings_only($hash, $full = false)
092 {
093 if ($full)
094 {
095 $pos = stripos($hash, '$', 1) + 1;
096 $length = 22 + (strripos($hash, '$') + 1 - $pos);
097 }
098 else
099 {
100 $pos = strripos($hash, '$') + 1;
101 $length = 22;
102 }
103 return substr($hash, $pos, $length);
104 }
105 }
106