hash_hmac使用纯传统的ASP(hash_hmac in using pure classic

2019-07-17 18:49发布

我想知道,有没有办法实现hash_hmac("sha256", $token, $signkey, true) (PHP)在传统的ASP?

我需要它verificate从Facebook的signed_request https://developers.facebook.com/docs/howtos/login/signed-request/

// Adding the verification of the signed_request below
$expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true); 
if ($sig !== $expected_sig) {
  error_log('Bad Signed JSON signature!');
  return null;
}

Answer 1:

我一直在使用一个文件我在Amazon论坛找到。 这是螺纹: https://forums.aws.amazon.com/message.jspa?messageID=147377

它使用的.wsc文件,它仅仅是一个JScript文件定义了一个对象,你可以在你的ASP代码中使用。 像这样:

' ### be sure to have sha256.wsc in the same folder as this script
    Dim sha256
    Set sha256 = GetObject( "script:" & Server.MapPath("sha256.wsc") )
    sha256.hexcase = 0

    Dim result
    result = sha256.b64_hmac_sha256( secretkey, stringtosign )

这原本是用来签署要求亚马逊API的文件。 至于原因,我不明白,这包括该行中的.wsc文件的代码:

d=d.replace ( /\s/g, "\n");

该功能可将所有空白字符,包括空格,以“\ n”。 很难相信,空间需要转换成“\ n”。 无论如何,我不得不注释掉这一行,使代码为我工作! 而且它的工作。 我一直在使用了一段时间没有问题。

从sha256.wsc文件:

/*
 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
 * in FIPS 180-2
 * Version 2.2 Copyright Angel Marin, Paul Johnston 2000 - 2009.
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 * Distributed under the BSD License
 * See http://pajhome.org.uk/crypt/md5 for details.
 * Adapted into a WSC for use in classic ASP by Daniel O'Malley
 * (based on an SHA-1 example by Erik Oosterwaal)
 * for use with the Amazon Product Advertising API
 */

直接链接到sha256.wsc文件: https://forums.aws.amazon.com/servlet/JiveServlet/download/9-34858-139271-2601/sha256.wsc

我一直无法找到的官方下载网站。



Answer 2:

看看微软的CAPICOM.dll。 你可以下载它在这里

基准可以发现这里

另一种选择是实现与.NET类的功能,使该“COM可见”所以你可以使用从传统的ASP .NET的DLL ...



Answer 3:

检查我们如何使用JavaScript实现加密algoritms在这个仓库: https://github.com/ictmanagement/redsysHMAC256_API_ASP

如果你打开此文件: https://github.com/ictmanagement/redsysHMAC256_API_ASP/blob/master/include/dvim_apiRedsys_VB.asp ,你会发现我们如何得到相同的结果,PHP函数hash_hmac("sha256", $token, $signkey, true)

    '/******  MAC Function ******/
    'recibe String|WordArray , retorna WordArray
    Private Function mac256(ent, key) 
        Dim encWA
        Set encWA = ConvertUtf8StrToWordArray(ent)
        Dim keyWA
        Set keyWA = ConvertUtf8StrToWordArray(key)
        Dim resWA
        Set resWA = CryptoJS.HmacSHA256(encWA, keyWA)
        Set mac256 = resWA
    End Function


文章来源: hash_hmac in using pure classic ASP
标签: asp-classic