부록 A.2.2에 설명 된 예제에서 사용 된 서명을 확인하기 위해 phpseclib를 사용하는 데 문제가 있습니다 (http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-38). 계수, 지수, 서명 및 표지로 사용 된 값은 명세서의 부록에서 나온 것입니다. 서명은 .NET을 사용할 때 확인하고 여러 입력 사양이 구현되어 있으므로 입력이 유효하다고 가정합니다. 필자는 phpseclib에 대한 이전의 경험이 없으며 키를로드하는 방법을 추측해야하고 설명서가 최소한으로 제공되므로 도움을 받으실 수 있습니다!phpseclib sha256 확인 문제
// per guzmar converts the encoding used in the ietf specification to a string
function cpim_base64url_decode($data) {
return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4,
'=', STR_PAD_RIGHT));
}
$rsa = new Crypt_RSA();
$publicKeyUrlEncoded = "ofgWCuLjybRlzo0tZWJjNiuSfb4p4fAkd_wWJcyQoTbji9k0l8W26mPddxHmfHQp-Vaw-4qPCJrcS2mJPMEzP1Pt0Bm4d4QlL-yRT-SFd2lZS-pCgNMsD1W_YpRPEwOWvG6b32690r2jZ47soMZo9wGzjb_7OMg0LOL-bSf63kpaSHSXndS5z5rexMdbBYUsLA9e-KXBdQOS-UTo7WTBEMa2R2CapHg665xsmtdVMTBQY4uDZlxvb3qCo5ZwKh9kG4LT6_I5IhlJH7aGhyxXFvUK-DWNmoudF8NAco9_h9iaGNj8q2ethFkMLs91kzk2PAcDTW9gb54h4FRWyuXpoQ";
$exponentUrlEncoded = "AQAB";
$publicKeyString = base64url_decode($publicKeyUrlEncoded);
$exponentString = base64url_decode($exponentUrlEncoded);
$pk = array(
'e' => new Math_BigInteger($exponentString, -256),
'n' => new Math_BigInteger($publicKeyString, -256)
);
$rsa->setHash('sha256');
$rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);
$tobesignedString = 'eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ';
$signatureUrlEncoded = "cC4hiUPoj9Eetdgtv3hF80EGrhuB__dzERat0XF9g2VtQgr9PJbu3XOiZj5RZmh7AAuHIm4Bh-0Qc_lF5YKt_O8W2Fp5jujGbds9uJdbF9CUAr7t1dnZcAcQjbKBYNX4BAynRFdiuB--f_nZLgrnbyTyWzO75vRK5h6xBArLIARNPvkSjtQBMHlb1L07Qe7K0GarZRmB_eSN9383LcOLn6_dO--xi12jzDwusC-eOkHWEsqtFZESc6BfI7noOPqvhJ1phCnvWh6IeYI2w9QOYEUipUTI8np6LbgGY9Fs98rqVt5AXLIhWkWywlVmtVrBp0igcN_IoypGlUPQGe77Rw";
$signatureString = base64url_decode($signatureUrlEncoded);
$keyloadResult = $rsa->loadKey($pk, CRYPT_RSA_PUBLIC_FORMAT_RAW);
$result = $rsa->verify($tobesignedString, $signatureString) ? 'verified' : 'unverified';
특정 문제에 대해 명확하게하려면 서명을 확인해야하지만 그렇지 않습니다 –
'n'구성 요소가 부정적 일 수 있습니까? –
예 'n'이 (가) 음수입니다. –