Documentación offline PHP master

openssl_verify

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

openssl_verify

Verifica una firma

Descripción#

openssl_verify(string $data, string $signature, OpenSSLAsymmetricKey $public_key, [string $algorithm], [int $padding]): int
```php

`openssl_verify` verifica que la firma `signature` es correcta para los datos `data`, y con la clave pública `public_key`. Esta clave debe ser la clave pública correspondiente a la clave privada utilizada durante la firma.

## Parámetros

`data`  
La cadena de datos utilizada para generar la firma

`signature`  
Una cadena binaria bruta, generada por la función `openssl_sign` o similar

`public_key`  
`OpenSSLAsymmetricKey` - una clave, retornada por la función `openssl_get_publickey`

`string` - una clave en formato PEM, por ejemplo: `-----BEGIN PUBLIC KEY----- MIIBCgK...`.

`algorithm`  
`int` - una de las [firmas de algoritmos](#openssl.signature-algos).

`string` - una cadena válida retornada por la función `openssl_get_md_methods`, por ejemplo: "sha1WithRSAEncryption" o "sha512". Algoritmo por omisión: "OPENSSL_ALGO_SHA1".

`padding`  
Relleno RSA PSS a utilizar.

## Valores devueltos

Retorna 1 si la firma es correcta, 0 si es incorrecta y -1 o `false` si ocurre un error.

## Historial de cambios

| Versión | Descripción |
|----|----|
| 8.5.0 | Se ha añadido el parámetro opcional `padding`. |
| 8.0.0 | `public_key` acepta ahora una instancia de `OpenSSLAsymmetricKey` o `OpenSSLCertificate`; anteriormente, se aceptaba un `resource` de tipo `OpenSSL key` o `OpenSSL X.509`. |

## Ejemplos

Ejemplo con `openssl_verify`
Ejemplo con `openssl_verify`
2048, "private_key_type" => OPENSSL_KEYTYPE_RSA, )); $details = openssl_pkey_get_details($private_key_res); $public_key_res = openssl_pkey_get_public($details['key']); //Crea una firma openssl_sign($data, $signature, $private_key_res, "sha256WithRSAEncryption"); //Verifica la firma $ok = openssl_verify($data, $signature, $public_key_res, OPENSSL_ALGO_SHA256); if ($ok == 1) { echo "válida"; } elseif ($ok == 0) { echo "inválida"; } else { echo "error: ".openssl_error_string(); } ?>

```php

Véase también#

openssl_sign