1. Список говнокодов пользователя Besmer

    Всего: 1

  2. PHP / Говнокод #18253

    +143

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    class Security{
        
        private $workFactor, $salt;
        
        public function __construct(){
            $this->setWorkFactor();
            $salt = $this->getSaltBytes();
            $this->setSalt($salt);
        }
        
        public function hash($password, $workFactor = 6){
            $options = [
                'cost' => (int)$workFactor,
                'salt' => $this->getSalt()
            ];
            $hash = password_hash($password, PASSWORD_BCRYPT, $options);
            return $hash;
        }
    
        public function checkHash($password, $passwordHash, $options = []){
            if( isset($options['salt'])){
                $this->setSalt($options['salt']);
            }
            $workFactor = isset($options['workFactor']) ? 
                    $options['workFactor'] : $this->getWorkFactor();
            return $passwordHash === $this->hash($password, $workFactor);
        }
        
        public function isLegacyHash($passwordHash){
            return strlen($passwordHash) === 60;
        }
        
        public function getSalt(){
            return $this->salt;
        }
        
        public function setSalt($salt){
            $this->salt = $salt;
        }
        
        public function getSaltBytes($lenght = 24){
            return $this->getRandomBytes($lenght);
        }
    
        public function getRandomBytes($lenght = 24){
            $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
            $charactersLength = strlen($characters);
            $randomString = '';
            for ($i = 0; $i < $lenght; $i++){
                $randomString .= $characters[rand(0, $charactersLength - 1)];
            }
            return $randomString;
        }
        
        public function setWorkFactor($workFactor = 6){
            $this->workFactor = (int)$workFactor;
        }
        
        public function getWorkFactor(){
            return $this->workFactor;
        }
        
    }

    Besmer, 28 Мая 2015

    Комментарии (28)