代码如下:
<?php
/**
* 密码字符加密 crypt CRYPT_SHA512
* @param string $str 加密字符串
* @param string $salt 盐值,最大长度是16,中英文都可以,不过要注意一个中文字符占3个字节(utf-8)
* @param int $rounds 循环次数,最小是 1000,最大是 999999999
* @return string
*/
function pass_sha512($str = '', $salt = '', $rounds = 6000)
{
$salt = substr($salt, 0, 16);
($rounds < 1000) && ($rounds = 1000);
($rounds > 999999999) && ($rounds = 999999999);
return crypt($str, '$6$rounds=' . $rounds . '$' . $salt);
}
/**
* 密码字符加密 crypt CRYPT_SHA256
* @param string $str 加密字符串
* @param string $salt 盐值,最大长度是16,中英文都可以,不过要注意一个中文字符占3个字节(utf-8)
* @param int $rounds 循环次数,最小是 1000,最大是 999999999
* @return string
*/
function pass_sha256($str = '', $salt = '', $rounds = 6000)
{
$salt = substr($salt, 0, 16);
($rounds < 1000) && ($rounds = 1000);
($rounds > 999999999) && ($rounds = 999999999);
return crypt($str, '$5$rounds=' . $rounds . '$' . $salt);
}
/**
* 密码字符加密 crypt CRYPT_BLOWFISH,(>=PHP 5.3.7)
* @param string $str 加密字符串
* @param string $salt 盐值,长度是22,字符串只能是 [./0-9A-Za-z]
* @param int $rounds 循环次数,04-31
* @return string
*/
function pass_blowfish($str = '', $salt = '', $rounds = 11)
{
($rounds < 4) && ($rounds = '04');
($rounds > 31) && ($rounds = '31');
$rounds = substr('0' . $rounds, -2);
$salt = preg_replace('/[^\.\/0-9A-Za-z]/', '', $salt);
(strlen($salt) < 22) && ($salt = str_pad($salt, 22, '.'));
return crypt($str, '$2y$' . $rounds . '$' . $salt);
}
/**
* 密码字符加密 crypt CRYPT_EXT_DES
* @param string $str 加密字符串
* @param string $salt 盐值,长度是4,字符串只能是 [./0-9A-Za-z]
* @param string $rounds 循环次数,长度是4,字符串只能是 [./0-9A-Za-z]
* @return string
*/
function pass_ext_des($str = '', $salt = '', $rounds = 'J1'){
$rounds = ltrim($rounds . '', '0');
$rounds = preg_replace('/[^\.\/0-9A-Za-z]/', '', $rounds . '');
$rounds = substr($rounds, 0, 4);
(strlen($rounds) !== 4) && ($rounds = str_pad($rounds, 4, '.'));
$salt = preg_replace('/[^\.\/0-9A-Za-z]/', '', $salt);
$salt = substr($salt, 0, 4);
(strlen($salt) !== 4) && ($salt = str_pad($salt, 4, '.'));
return crypt($str, '_' . $rounds . $salt);
}
/**
* 密码字符加密 crypt CRYPT_STD_DES
* @param string $str 加密字符串
* @param string $salt 盐值,长度是2,字符串只能是 [./0-9A-Za-z]
* @return string
*/
function pass_std_des($str = '', $salt = '')
{
$salt = preg_replace('/[^\.\/0-9A-Za-z]/', '', $salt);
$salt = substr($salt, 0, 2);
(strlen($salt) !== 2) && ($salt = str_pad($salt, 2, '.'));
return crypt($str, $salt);
}
/**
* 密码字符加密 crypt CRYPT_MD5
* @param string $str 加密字符串
* @param string $salt 盐值,最大长度是8,超过部分还是取前面8个字符为盐值
* @return string
*/
function pass_md5($str = '', $salt = '')
{
$salt = substr($salt, 0, 8);
return crypt($str, '$1$' . $salt);
}
function sha224($data = '', $raw_output = false)
{
return hash('sha224', $data, $raw_output);
}
function sha256($data = '', $raw_output = false)
{
return hash('sha256', $data, $raw_output);
}
function sha384($data = '', $raw_output = false)
{
return hash('sha384', $data, $raw_output);
}
function sha512($data = '', $raw_output = false)
{
return hash('sha512', $data, $raw_output);
}
function sha3_224($data = '', $raw_output = false)
{
return hash('sha3-224', $data, $raw_output);
}
function sha3_256($data = '', $raw_output = false)
{
return hash('sha3-256', $data, $raw_output);
}
function sha3_384($data = '', $raw_output = false)
{
return hash('sha3-384', $data, $raw_output);
}
function sha3_512($data = '', $raw_output = false)
{
return hash('sha3-512', $data, $raw_output);
}
?>
如图: