Gennaio 13, 2025

openssl_verify() in PHP: Cos’è e A Cosa Serve?

Introduzione

La funzione openssl_verify() in PHP è uno strumento essenziale per la verifica delle firme digitali, garantendo così l’integrità e l’autenticità dei dati. Questa funzione fa parte dell’estensione OpenSSL di PHP, utilizzata per implementare protocolli di sicurezza e crittografia.

Spiegazione

openssl_verify() verifica che la firma digitale fornita corrisponda ai dati e alla chiave pubblica associata. Restituisce 1 se la firma è corretta, 0 se è errata e -1 in caso di errore. La firma digitale è creata utilizzando la chiave privata del mittente, mentre il destinatario utilizza la chiave pubblica per la verifica.

Quando si utilizza

La funzione openssl_verify() è comunemente usata in scenari in cui è necessario autenticare la fonte dei dati o garantire che i dati non siano stati alterati durante la trasmissione. È particolarmente utile in applicazioni di pagamento online, comunicazioni sicure e sistemi di gestione delle identità digitali.

Esempi

Ecco un esempio di utilizzo di openssl_verify() in PHP:

<?php
// Dati che sono stati firmati
$data = 'Questo è un messaggio da verificare.';

// Firma digitale del messaggio
$signature = '...'; // Inserire qui la firma digitale corretta

// Chiave pubblica del mittente
$publicKey = '...'; // Inserire qui la chiave pubblica in formato PEM

// Verifica della firma
$pubkeyid = openssl_pkey_get_public($publicKey);
$ok = openssl_verify($data, $signature, $pubkeyid, OPENSSL_ALGO_SHA256);

if ($ok == 1) {
    echo "La firma è corretta.";
} elseif ($ok == 0) {
    echo "La firma non è corretta.";
} else {
    echo "Errore nella verifica della firma.";
}

// Liberare la risorsa della chiave pubblica
openssl_free_key($pubkeyid);
?>

In questo esempio, si assume che il messaggio sia stato firmato con l’algoritmo SHA-256. La chiave pubblica e la firma devono essere fornite in formato corretto per ottenere risultati accurati dalla funzione openssl_verify().

Giorgio

Sono un Web Developer con oltre 20 anni di esperienza nello sviluppo di applicazioni web complesse. Specializzato in PHP, gestione di database relazionali e non relazionali, e integrazione di API, realizzo soluzioni robuste e scalabili per soddisfare esigenze aziendali e tecniche. Mi occupo di architetture server-side, ottimizzazione delle performance e automazione dei processi.