【问题标题】:How to convert this PHP code into javascript?如何将此 PHP 代码转换为 javascript?
【发布时间】:2014-04-10 12:33:30
【问题描述】:

我有一些 PHP 代码:

return base64_encode( hash_hmac( self::HASH_ALGORITHM, $string_to_sign, $this->_consumer_secret, true ) );

我想用 JavaScript 编写它。因为我在Phonegap中构建一个应用程序,PHP在Phonegap中不起作用。

我试过这个:

var hash = CryptoJS.HmacSHA256(HASH_ALGORITHM,string_to_sign,consumer_secret);
var hashInBase64 = CryptoJS.enc.Base64.stringify(hash);
return hashInBase64;

这里是生成签名的php代码

public function generate_oauth_signature( $params, $http_method, $endpoint ) {
        $base_request_uri = rawurlencode( $this->_api_url . $endpoint );

        // normalize parameter key/values and sort them
        array_walk( $params, array( $this, 'normalize_parameters' ) );
        uksort( $params, 'strcmp' );

        // form query string
        $query_params = array();
        foreach ( $params as $param_key => $param_value ) {
            $query_params[] = $param_key . '%3D' . $param_value; // join with equals sign
        }

        $query_string = implode( '%26', $query_params ); // join with ampersand

        // form string to sign (first key)
        $string_to_sign = $http_method . '&' . $base_request_uri . '&' . $query_string;
        return base64_encode( hash_hmac( self::HASH_ALGORITHM, $string_to_sign, $this->_consumer_secret, true ) );
    }

所以请任何人都可以帮助我。

【问题讨论】:

标签: javascript php jquery cordova


【解决方案1】:

仔细看看您是如何使用cryptojs 函数的...您正在以该方法似乎不支持的方式指定散列算法。

这个:

var hash = CryptoJS.HmacSHA256(HASH_ALGORITHM,string_to_sign,consumer_secret);

...应该是这样的:

var hash = CryptoJS.HmacSHA256(string_to_sign,consumer_secret);

...因为HmacSHA256 已经将SHA256 指定为HASH_ALGORITHM

【讨论】:

  • 还是有同样的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-28
相关资源
最近更新 更多