>  기사  >  백엔드 개발  >  PHP5.3 버전에서 Alipay 서명 확인 실패에 대한 해결 방법

PHP5.3 버전에서 Alipay 서명 확인 실패에 대한 해결 방법

PHPz
PHPz원래의
2023-04-06 08:54:131661검색

최근 전자결제가 대중화되면서 알리페이는 사람들의 생활에 없어서는 안될 결제수단 중 하나로 자리 잡았습니다. 결제 보안을 보장하기 위해 Alipay 거래를 수행할 때 거래 정보가 변조되거나 위조되는 것을 방지하기 위해 거래 정보에 서명하고 확인해야 합니다. 그러나 최근 일부 사용자는 PHP5.3 버전을 사용할 때 Alipay 서명 확인에 실패하는 경우가 많다고 보고했습니다. 그렇다면 이 문제를 해결하는 방법은 무엇입니까?

1. 문제 분석

우선, PHP5.3 이전의 MD5 알고리즘은 한자를 처리하는 데 있어서 충분히 엄격하지 않으며, 한자가 거래 정보에서 많은 부분을 차지한다는 점을 분명히 해야 합니다. 알리페이 서명인증 실패 문제. 이 문제는 PHP 버전 5.3에서만 발생하는 것이 아니라 다른 이전 버전에도 비슷한 문제가 있습니다. 이 문제에 대응하여 Alipay는 서명 및 검증에 새로운 RSA 알고리즘을 사용할 것을 공식적으로 권장합니다.

2. 솔루션

MD5 알고리즘보다 안전하고 안정적인 RSA 알고리즘을 사용하여 서명을 확인하세요. RSA의 정식 명칭은 "Rivest-Shamir-Adleman"으로, 비대칭 암호화 알고리즘이다. 서명 확인을 위해 RSA 알고리즘을 사용하는 주요 단계는 다음과 같습니다.

1. 공개 및 개인 키 생성

PHP에서는 openssl 확장 라이브러리를 사용하여 RSA 공개 및 개인 키를 생성할 수 있습니다.

$config = array(
  "digest_alg" => "sha256",
  "private_key_bits" => 1024,
  "private_key_type" => OPENSSL_KEYTYPE_RSA,
);
$res = openssl_pkey_new($config);
openssl_pkey_export($res, $private_key);
$public_key = openssl_pkey_get_details($res);
$public_key = $public_key["key"];

2. 오른쪽 거래 정보 서명

$sign = '';
openssl_sign($data, $sign, $private_key, OPENSSL_ALGO_SHA256);
$sign = base64_encode($sign);

서명하기 전에 null 값 및 서명 필드 값을 제거하는 등 거래 정보를 처리해야 한다는 점에 유의하세요. 구체적인 처리 방법은 Alipay의 공식 문서를 참조하세요.

3. 서명 확인

서명 확인을 위한 코드는 다음과 같습니다.

$result = false;
if (!empty($sign) && !empty($public_key)) {
  $sign = base64_decode($sign);
  $result = openssl_verify($data, $sign, $public_key, OPENSSL_ALGO_SHA256);
}

서명 확인 시 공개키의 정확성이 보장되어야 한다는 점에 유의하세요. 공개키는 알리페이에서 업로드 및 관리할 수 있습니다. 개발자 센터.

3. 요약

PHP5.3 버전에서 Alipay 서명 확인 실패 문제는 주로 MD5 알고리즘의 한자 처리가 느슨하여 발생합니다. 이 문제를 해결하기 위해 Alipay는 서명 및 검증에 새로운 RSA 알고리즘을 사용할 것을 공식적으로 권장하고 해당 코드 예제를 제공합니다. Alipay 거래를 수행할 때 거래 정보의 보안과 신뢰성을 보장하기 위해 서명 및 서명 확인을 위해 PHP 코드의 RSA 알고리즘을 사용하는 것이 좋습니다.

위 내용은 PHP5.3 버전에서 Alipay 서명 확인 실패에 대한 해결 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.