4

知りたいのですがhash_hmac("sha256", $token, $signkey, true)、従来の ASP で (php) を達成する方法はありますか?

Facebook https://developers.facebook.com/docs/howtos/login/signed-request/からの 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;
}
4

3 に答える 3

10

Amazon フォーラムで見つけたファイルを使用しています。これはスレッドです: https://forums.aws.amazon.com/message.jspa?messageID=147377

これは、ASP コードで使用できるオブジェクトを定義する単なる JScript ファイルである .wsc ファイルを使用します。このような:

' ### 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 )

これは、もともと Amazon 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

公式のダウンロード サイトが見つかりませんでした。

于 2013-01-04T09:18:22.103 に答える
1

microsoft capicom.dll を見てください。ここからダウンロードできます

参照はここにあります

別のオプションは、.net クラスを使用して関数を実装し、その「com を表示」して、従来の ASP から .net DLL を使用できるようにすることです...

于 2013-01-03T10:06:18.757 に答える
0

このリポジトリで暗号化アルゴリズムの JavaScript 実装を使用する方法を確認してください: 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
于 2016-02-19T16:42:50.633 に答える