[php]php中cryptr加密函数范例
php cryptr 加密函数,[php]php中cryptr加密函数范例
- class CryptHelper {
- /**
- * 加密
- * @param unknown $password
- * @param unknown $salt
- * @return string
- */
- public static function crypt($password,$salt){
- // $saltPrefix .= '$2y$'; // Blowfish 算法
- // $saltPrefix .= '13'; // 两位 cost 参数
- // $saltPrefix .= '$'; // 一个 $
- // $saltSuffix .= 'LGsF2ctmKKHE1yr2Py.vtu';
- return crypt($password, $salt);
- }
- /**
- * 字符比较
- * @param unknown $expected
- * @param unknown $actual
- * @return boolean
- */
- public static function compareString($expected, $actual)
- {
- $expected .= "\0";
- $actual .= "\0";
- $expectedLength = mb_strlen($expected, '8bit');
- $actualLength = mb_strlen($actual, '8bit');
- $diff = $expectedLength - $actualLength;
- for ($i = 0; $i < $actualLength; $i++) {
- $diff |= (ord($actual[$i]) ^ ord($expected[$i % $expectedLength]));
- }
- return $diff === 0;
- }
- /**
- * 校验密码
- * @param unknown $password
- * @param unknown $hash
- * @return boolean
- */
- public static function validatePassword($password, $hash)
- {
- if (!is_string($password) || $password === '') {
- return false;
- }
- if (!preg_match('/^\$2[axy]\$(\d\d)\$[\.\/0-9A-Za-z]{22}/', $hash, $matches)
- || $matches[1] < 4
- || $matches[1] > 30
- ) {
- return false;
- }
- $test = self::crypt($password, $hash);
- $n = strlen($test);
- if ($n !== 60) {
- return false;
- }
- return self::compareString($test, $hash);
- }
- }
测试:
- // --------- 测试 --------
- // cuplayer.com提示:加密
- $salt = '$2y$13$LGsF2ctmKKHE1yr2Py.vtu'; // 7 + 22 == 29
- $password = 'Aa123456';
- echo CryptHelper::crypt($password,$salt);
- echo PHP_EOL;
- // cuplayer.com提示:校验
- $hash = '$2y$13$LGsF2ctmKKHE1yr2Py.vtuiUR/A0C6tARkCxMO.LUlsiRISu7u53m';
- echo CryptHelper::crypt($password,$hash);
- echo PHP_EOL;
- echo strlen($hash);
- echo PHP_EOL;
- echo CryptHelper::validatePassword($password, $hash);
来源:http://www.cnblogs.com/xiaoyaogege/p/6256570.html
热门文章推荐
- [php]优酷真实视频地址解析算法
- [Dz]discuz手机版支持视频播放的方法
- [PHP]php加密js解密的方法实例
- [php]用PHP打印出前一天的时间格式
- [PHP]mpeg,mp3,avi的ffmpeg的php转换类
- [php]php中3DES加密一个非常有用的3des加密
- [PHP]php.ini修改上传文件的大小限制处理方法
- [php]用过的最好用的php分页类源代码
请稍候...