我需要编写 php 函数来计算密码字符串的哈希值。 在 MSSQL 中,哈希的计算方式如下:
lower(substring(convert(varchar(200), hashbytes('md5', 'my_password_string' + '|' + cast(cast(getdate() as date) as varchar(max))), 1), 3, 32))
这个疯狂算法的 php 模拟是什么?
我试过这个:
$password = hash('md5' , 'my_password_string'.'|'.date('YYYY-mm-dd'), false);
但结果不一样
最佳答案
您需要使用hash()
,但重要的部分是 1) 日期转换的结果,2) 密码的字符编码和 3) varchar
数据库中数据的整理。但以下基本示例是一个选项:
T-SQL:
SELECT
LOWER(SUBSTRING(
CONVERT(
varchar(200),
HASHBYTES(
'md5',
'my_password_string' + '|' + CONVERT(varchar(10), CONVERT(date, GETDATE(), 23))
),
1
),
3,
32
))
PHP:
<?
$password = strtolower(substr(hash('md5' , 'my_password_string'.'|'.date('Y-m-d'), false), 0, 200));
echo $password;
?>
结果:
b2b2c0a81c42f802d98200daa504f197
关于MSSQL 的 PHP 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66953737/