需要更改安全算法从md5到SHA-256 HMAC php

时间:2016-11-24 08:47:46

标签: php md5 sha256

我是网络开发世界的新手,我被朋友要求将他们的支付网关从md5升级到SHA-256 HMAC。

我试图自己更改它,但是当我转到安全网关时遇到错误,我认为我的代码存在一些问题,我不太明白

现有代码:

if($type == "Credit Card") {
    unset($_POST["type"]);
    unset($_POST["order_id"]);
    $SECURE_SECRET = "MIGS_SS";  
    $vpcURL = $_POST["virtualPaymentClientURL"] . "?";  
    unset($_POST["SubButL"]);
    unset($_POST["virtualPaymentClientURL"]); 
    $md5HashData = $SECURE_SECRET;
    ksort ($_POST);
    $appendAmp = 0;

foreach($_POST as $key => $value) {
  if (strlen($value) > 0) {      
if ($appendAmp == 0) {
  $vpcURL .= urlencode($key) . '=' . urlencode($value);
  $appendAmp = 1;
  } else {
  $vpcURL .= '&' . urlencode($key) . "=" . urlencode($value);
}
  $md5HashData .= $value;
  }
}

if (strlen($SECURE_SECRET) > 0) {
  $vpcURL .= "&vpc_SecureHash=" . strtoupper(md5($md5HashData));
}

header("Location: ".$vpcURL);
} else {
header("Location: index.php?dz=eft&id=".$order_id."\n\n");
}

我收到的新代码:

            foreach($_POST as $key => $value) {
         // create the hash input and URL leaving out any fields that have no  value
            if (strlen($value) > 0) {
        ?>
             <input type="hidden" name="<?php echo($key); ?>"  value="<?php    echo($value); ?>"/><br>
      <?php             
            if ((strlen($value) > 0) && ((substr($key, 0,4)=="vpc_") ||       (substr($key,0,5) =="user_"))) {
         $hashinput .= $key . "=" . $value . "&";
        }
        }

       }

       $hashinput = rtrim($hashinput, "&");
        ?>      
             <!-- attach SecureHash -->
             <input type="hidden" name="vpc_SecureHash"  value="<?php echo(strtoupper(hash_hmac('SHA256', $hashinput, pack('H*',$securesecret)))); ?>"/>
            <input type="hidden" name="vpc_SecureHashType" value="SHA256">

如何在我的代码中使用它?

如果你能在这里写出正确的代码我应该改变吗?

1 个答案:

答案 0 :(得分:0)

为什么要更改整个代码..

只需将md5功能更改为sha

if (strlen($SECURE_SECRET) > 0) {
  $vpcURL .= "&vpc_SecureHash=" . strtoupper(md5($md5HashData));
}

if (strlen($SECURE_SECRET) > 0) {
  $vpcURL .= "&vpc_SecureHash=" . strtoupper(sha1($md5HashData));
}