Openssl ile bir dijital imzayı doğrulamak için nasıl

2 Cevap php

Ben başarılı bir işlem sonrasında, geri verileri manipüle engellemek için bir güvenlik önlemi olarak URL bir imza ile web sitesine yönlendirir, bir üçüncü taraf kredi kartı işlem hizmeti (Paybox) kullanıyorum. Bu istek, bu hizmetten kökenli olduğunu kanıtlamak gerekiyordu. Yani benim başarı URL şuna benzer:

/ Success.php? Imza = [BÜYÜK HASH]

Ben burada bu imzayı doğrulayarak ile başlamak için hiçbir fikrim yok. Bu hizmet bir kamu anahtarını sağlamaz, ve ben bir özel anahtar oluşturmak gerekir varsayıyorum, ama ben o kadar ötesinde bilmiyorum.

Ben linux ile oldukça iyi değilim, ve ben bazı openssl komutları çalıştırmak zorunda olacağımı biliyorum. Ben de yerli openssl () işlevleri vardır PHP, doğrulama komut dosyası yazıyorum.

Herkes bazı sahte kod, hatta fonksiyonel kodu ile bana doğru yönde itin lütfen olsaydı, ben çok minnettar olurum. Teşekkürler.

2 Cevap

Herhangi bir özel anahtara ihtiyacınız olmayacak. Sadece gerekir böylece imza Paybox özel anahtar ile yapılır their public key, data they've signed ve signature. Imzalamış oldukları verilerin hangi bölümünü görmek için onların belgelerine bakın.

PHP kılavuzu belgelerinde tam bir örnek içeren openssl_verify.

Sen () openssl_verify kullanabilirsiniz, aşağıdaki örnekte Stiv@php.net dan

<?php
// $data is assumed to contain the data to be signed

// fetch certificate from file and ready it
$fp = fopen("path/file.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);

// state whether signature is okay or not
// use the certificate, not the public key
$ok = openssl_verify($data, $signature, $cert);
if ($ok == 1) {
    echo "good";
} elseif ($ok == 0) {
    echo "bad";
} else {
    echo "ugly, error checking signature";
}
?>

Openssl_verify ilgili daha fazla bilgi () burada: http://nl.php.net/openssl_verify

Paybox da "Paybox SİSTEMİ ile dijital işaret kontrol irdelenmesi ve örnekler" kendi sitesinde yüklenebilir bir zip dosyası var

http://www1.paybox.com/telechargement_focus.aspx?cat=3