我在Node.js中搜索了一种使用以下PHP函数的方法,在搜索了一段时间后,我发现在我的情况下没有任何工作:
x一个月一次x一个月一次x一个月二次x一个月三次
我们的想法是用js重写这个php代码:
function CalculateSRP6Verifier($username, $password, $salt)
{
// algorithm constants
$g = gmp_init(7);
$N = gmp_init('894B645E89E1535BBDAD5B8B290650530801B18EBFBF5E8FAB3C82872A3E9BB7', 16);
// calculate first hash
$h1 = sha1(strtoupper($username . ':' . $password), TRUE);
// calculate second hash
$h2 = sha1($salt.$h1, TRUE);
// convert to integer (little-endian)
$h2 = gmp_import($h2, 1, GMP_LSW_FIRST);
// g^h2 mod N
$verifier = gmp_powm($g, $h2, $N);
// convert back to a byte array (little-endian)
$verifier = gmp_export($verifier, 1, GMP_LSW_FIRST);
// pad to 32 bytes, remember that zeros go on the end in little-endian!
$verifier = str_pad($verifier, 32, chr(0), STR_PAD_RIGHT);
// done!
return $verifier;
}
2条答案
按热度按时间ctehm74n1#
我在不久前找到了我的问题的答案。这可以在Node.js中使用Buffer和下面的库
bigint-buffer
,big-integer
来完成,就像我在下面做的那样。如果你想直接使用我创建的一个适用于TrinityCore和AzerothCore的库:https://www.npmjs.com/package/trinitycore-srp6
af7jpaap2#