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">
我怎樣才能我們它在我的代碼?
如果你可以在這裏寫出正確的代碼,我應該改變?
如果你是一個「新手」安全和網絡的發展,這可能是一個糟糕的主意,用加密原語和信用卡支付合作。只是我的兩分錢。 –