PHP的MSSQL类比

3

我需要编写 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);

但结果并不相同。

1个回答

1

您需要使用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

谢谢,Zhorow!我使用了其他的日期时间格式。你的格式没问题! - harp1814

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接