2016-11-24 84 views
0

我是網絡開發領域的新手,我已經被朋友請求將其支付網關從md5升級到SHA-256 HMAC。需要對安全算法從md5更改爲SHA-256 HMAC php

我曾試圖改變我自己,轉至安全網關時,但是我得到的錯誤,我覺得有我的代碼,我不安靜明白

現有代碼一些問題:

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"> 

我怎樣才能我們它在我的代碼?

如果你可以在這裏寫出正確的代碼,我應該改變?

+2

如果你是一個「新手」安全和網絡的發展,這可能是一個糟糕的主意,用加密原語和信用卡支付合作。只是我的兩分錢。 –

回答

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)); 
} 
+0

感謝您的建議,但是獲取HTTP狀態 - 400錯誤... – Jayral