哈希密码和 return 带有特殊字符的字符串
Hash password and return string with special characters
我正在尝试使用一种非常强大的散列算法,并在 PHP 中的编码字符串中输出特殊字符。目前我正在使用 hash_pbkdf2 我认为这是目前最安全的散列形式,但它不会输出仅包含大写和小写特殊字符的字符串。有什么办法可以修改它来做到这一点,或者是否有另一种算法可以更好地工作?也许如果我将其与另一种加密算法结合使用,该算法将获取 hash_pbkdf2 的输出并将其加密为具有特殊字符的内容?
如果您使用它来散列密码以存储它们 password_hash() (http://php.net/manual/en/function.password-hash.php) or crypt() (http://php.net/manual/en/function.crypt.php) 更适合
你可以使用这个:
$input = "YourPassword";
$EncryptionKey = "sFdhgdvDRg4353FDgdfg";
$encrypted = EncryptIt( $input);
echo "Encrypted: " . EncryptIt( $input ) . "<br/>";
echo "Decrypted: ". DecryptIt( $encrypted );
function EncryptIt( $q ) {
$cryptKey = $EncryptionKey;
$qEncoded = base64_encode( mcrypt_encrypt( MCRYPT_RIJNDAEL_256, md5( $cryptKey ), $q, MCRYPT_MODE_CBC, md5( md5( $cryptKey ) ) ) );
return( $qEncoded );
}
function DecryptIt( $q ) {
$cryptKey = $EncryptionKey;
$qDecoded = rtrim( mcrypt_decrypt( MCRYPT_RIJNDAEL_256, md5( $cryptKey ), base64_decode( $q ), MCRYPT_MODE_CBC, md5( md5( $cryptKey ) ) ), "[=10=]");
return( $qDecoded );
}
hash_pbkdf2()
默认输出十六进制编码的结果。您可以传入 true
作为函数的第六个参数,以接收原始二进制输出,但随后会得到无法打印的字符。
如果您只想获取可打印字符,可以尝试通过将基数从 16(十六进制)更改为 94(所有可打印 ASCII 字符)来对结果进行编码。这是一个 example code.
我正在尝试使用一种非常强大的散列算法,并在 PHP 中的编码字符串中输出特殊字符。目前我正在使用 hash_pbkdf2 我认为这是目前最安全的散列形式,但它不会输出仅包含大写和小写特殊字符的字符串。有什么办法可以修改它来做到这一点,或者是否有另一种算法可以更好地工作?也许如果我将其与另一种加密算法结合使用,该算法将获取 hash_pbkdf2 的输出并将其加密为具有特殊字符的内容?
如果您使用它来散列密码以存储它们 password_hash() (http://php.net/manual/en/function.password-hash.php) or crypt() (http://php.net/manual/en/function.crypt.php) 更适合
你可以使用这个:
$input = "YourPassword";
$EncryptionKey = "sFdhgdvDRg4353FDgdfg";
$encrypted = EncryptIt( $input);
echo "Encrypted: " . EncryptIt( $input ) . "<br/>";
echo "Decrypted: ". DecryptIt( $encrypted );
function EncryptIt( $q ) {
$cryptKey = $EncryptionKey;
$qEncoded = base64_encode( mcrypt_encrypt( MCRYPT_RIJNDAEL_256, md5( $cryptKey ), $q, MCRYPT_MODE_CBC, md5( md5( $cryptKey ) ) ) );
return( $qEncoded );
}
function DecryptIt( $q ) {
$cryptKey = $EncryptionKey;
$qDecoded = rtrim( mcrypt_decrypt( MCRYPT_RIJNDAEL_256, md5( $cryptKey ), base64_decode( $q ), MCRYPT_MODE_CBC, md5( md5( $cryptKey ) ) ), "[=10=]");
return( $qDecoded );
}
hash_pbkdf2()
默认输出十六进制编码的结果。您可以传入 true
作为函数的第六个参数,以接收原始二进制输出,但随后会得到无法打印的字符。
如果您只想获取可打印字符,可以尝试通过将基数从 16(十六进制)更改为 94(所有可打印 ASCII 字符)来对结果进行编码。这是一个 example code.