Created
August 23, 2012 16:38
-
-
Save TiuTalk/3438461 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Bcrypt hashing class | |
* | |
* @author Thiago Belem <[email protected]> | |
* @link https://gist.github.com/3438461 | |
*/ | |
class Bcrypt { | |
/** | |
* Default salt prefix | |
* | |
* @see http://www.php.net/security/crypt_blowfish.php | |
* | |
* @var string | |
*/ | |
protected static $_saltPrefix = '2a'; | |
/** | |
* Default hashing cost (4-31) | |
* | |
* @var integer | |
*/ | |
protected static $_defaultCost = 8; | |
/** | |
* Salt limit length | |
* | |
* @var integer | |
*/ | |
protected static $_saltLength = 22; | |
/** | |
* Hash a string | |
* | |
* @param string $string The string | |
* @param integer $cost The hashing cost | |
* | |
* @see http://www.php.net/manual/en/function.crypt.php | |
* | |
* @return string | |
*/ | |
public static function hash($string, $cost = null) { | |
if (empty($cost)) { | |
$cost = self::$_defaultCost; | |
} | |
// Salt | |
$salt = self::generateRandomSalt(); | |
// Hash string | |
$hashString = self::__generateHashString((int)$cost, $salt); | |
return crypt($string, $hashString); | |
} | |
/** | |
* Check a hashed string | |
* | |
* @param string $string The string | |
* @param string $hash The hash | |
* | |
* @return boolean | |
*/ | |
public static function check($string, $hash) { | |
return (crypt($string, $hash) === $hash); | |
} | |
/** | |
* Generate a random base64 encoded salt | |
* | |
* @return string | |
*/ | |
public static function generateRandomSalt() { | |
// Salt seed | |
$seed = uniqid(mt_rand(), true); | |
// Generate salt | |
$salt = base64_encode($seed); | |
$salt = str_replace('+', '.', $salt); | |
return substr($salt, 0, self::$_saltLength); | |
} | |
/** | |
* Build a hash string for crypt() | |
* | |
* @param integer $cost The hashing cost | |
* @param string $salt The salt | |
* | |
* @return string | |
*/ | |
private static function __generateHashString($cost, $salt) { | |
return sprintf('$%s$%02d$%s$', self::$_saltPrefix, $cost, $salt); | |
} | |
} |
Cara, publica isso como um pacote do composer... =)
cara valeu mesmo por disponibilizar seu código, vai me ajudar muito em um projeto!!!!
Show brother! Valeu!
Após implementar em um sistema apareceu bloqueio pelo Bit Defender, sabe o que pode ser?
privacyThreat Password Stealer
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I'll sure use it. Thanks!