Я обновляю md5 до sha512 для авторизации DPM-
Пожалуйста, помогите мне -
У меня не получается.
см. Изменение кода -
при создании отпечатка пальца для x_hp_hash -
от md5 -
if (function_exists('hash_hmac')) {
return hash_hmac("md5", $api_login_id . "^" . $fp_sequence . "^" .
$fp_timestamp . "^" . $amount . "^", $transaction_key);
}
return bin2hex(mhash(MHASH_MD5, $api_login_id . "^" . $fp_sequence . "^" . $fp_timestamp . "^" . $amount . "^", $transaction_key));
до sha512 -
$signature_key = hex2bin($signature_key);
if (function_exists('hash_hmac')) {
return hash_hmac("sha512", $api_login_id . "^" . $fp_sequence . "^" .
$fp_timestamp . "^" . $amount . "^", $signature_key);
}
return bin2hex(mhash(MHASH_SHA512, $api_login_id . "^" . $fp_sequence . "^" . $fp_timestamp . "^" . $amount . "^", $signature_key));
При получении ответа и сравнении значения x_sha_hash
от md5 -
if(strtoupper(md5($this->md5_setting . $this->api_login_id . $this
->transaction_id . $amount)) == $this->md5_hash){
//valid
} else{
//not valid
}
Изменено на sha512 -
$this->signature_key = hex2bin($this->signature_key);
$string = '^'.$this->api_login_id.'^'.$this->transaction_id.'^'.$amount.'^';
if(strtoupper(HASH_HMAC('sha512', $string, $this->signature_key)) == $this->SHA2_Hash){
//valid
} else{
//not valid
}
Что я делаю не так?
Когда я проверяю транзакцию на моем конце, он говорит, пожалуйста, проверьте настройку md5. Проверяется на основе последнего кода, показанного во фрагменте.
ключ моей подписи = E284BDC12A45A7F5B0933A352EB1C3F25E91A3B92360693D94E4366190EF12E78F6CFE8601751F719DA7A72ABBA117BF0161F8A1DD894DADE3C56A83823 * 355
x_hp_hash отправка с использованием второго фрагмента кода (т. Е. Отпечатка пальца sha512)
x_hp_hash = b4c9e1878f88aa9c4f808761ed8ceee71ab117cc0f1297b2d850e28351f08fc52bd528a7538c832568c674a1d5095ead1a5383a626c9797587ab16bae76ebf
после подачи в ответ -
X_SHA2_Hash - 19AB7947709CF6CB2B8415784EBD7669FCDE5D83B69EC8C716203806A3235308187668F5783F9CA0F1AE8A47808EDAB241025A8AF61A2FABA2786D8
сгенерированный хеш-код -
3E6427E67271B1F0732D3D95217D25EE4D7C4103C906A6CB70943498698157F48F7BECD5C7E5393CF2A489B464070A7778F15757385E8F29029CFC3F66256F05
с использованием последнего фрагмента выше.
поэтому они не равны, поэтому не является допустимой транзакцией.