2014-09-11 2 views
1

J'ai un courriel signé numériquement.Vérifier la signature numérique à l'aide de php

email:

-----BEGIN PGP SIGNED MESSAGE----- 
Hash: SHA1 

The below email has been digitally signed for test purposes. We will 
now go on and save this signed email in our dms system. 
-----BEGIN PGP SIGNATURE----- 
Version: GnuPG v2.0.22 (MingW32) 
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ 

iQEcBAEBAgAGBQJTnwd9AAoJEEWjhuB1kNr9dQcH/2YeZlHEfK/KOPg8XhpOY+4l 
3camfFVya8JIzLHsOzhhdSqIItDr7VlGDrjrMgPPiD1abyy9zhcqZ18Kh8sUuFJV 
/TA434rrnMJC0xmSzXl4uo+UagyNyCjzwR4TFCGP4Ob6SzPl/jxfrcfO5yXEdF1I 
X6wgQUmnb3ZLczdPVXsKpwpVIGqX7diwe1CAZKxCmjZo9rr/MmDLLl7AjYq/WQDT 
uOYqXs2IasOIiTGpYrqexBpDn1qRUNiKVgFSRUTfTjYGXYij9P635WTfeE1bQrn1 
HpT9hKhipYPkFcELAor7asqAcnE0lc4Oy9NV2bUryss8ic/pkhiXvlohA3MpCDA= 
=+IbK 
-----END PGP SIGNATURE----- 

clé publique:

-----BEGIN PGP PUBLIC KEY BLOCK----- 
Version: GnuPG v2.0.22 (MingW32) 

mQENBFOfBmkBCAC6gH9rR185hiCADttaQeUp9Jc+4Zzx60E+ogWd33Tb1dNvK/IK 
wqpnRpYI1CHVpqX0xWy8Ylcw3rLpPJ6BUzO3hWFLRMXAIXiemV/+VKrKysgm1Xdg 
1PSAVfqmgkXLEEGGSj2OHNA0VVnl1G8AI8/SMpLqhS3PMz3X1nmBv4hLohugLla9 
AVdYp6Me5OAWfjHswkUxCvc/fSh2ufFSnFxgjUibIyn+GP5qG8Wc+GjrBzTLzjA7 
LvP198fWIHQ5w342F3WE8/9ec+1ir/a4japcFodRibXBEqltF+BXgk9pVcEXTd8O 
FCxygrnSkWioj9Qf5uyjuKfV1F7Wq/Nu5uPZABEBAAG0JkFiaGluYXYgQWdnYXJ3 
YWwgPGFiaGluYXZAdHJ1dGVjaC5vcmc+iQE/BBMBAgApBQJTnwZpAhsjBQkJZgGA 
BwsJCAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQRaOG4HWQ2v2F9Af/RAKCz0uo 
xqrVe1MXqCe9ZCPSwlHGH4X4NtQbo7FTYy7K2fo9ucoKI4c2lHZA+Ef1K6BhZG34 
IlXPSwy8nhTWJl7pi/xo7gEDlnHJMJCGvQcdtm4lkp39V2cy/Y0lS9V/EYmiesIX 
tmPwwyYxo85jNsdmbjQKDTv5mcir9AebllCk2NlrxpyTO8oAnp1peHaHHq+U92e3 
ZipHEiuAvE0U6WU/fA7tHoWoUor9AUm1hE5mSsyi+do4o/YJqGEgAss62v0npcBx 
oyHoHum5XUgZ1kjvq40Mzkxo9N6vU7P7ULyt9FZylM+pk9XEqiz8IGTPW6JGiJS2 
WmhJli2Szl1xgLkBDQRTnwZpAQgA27UvNu/m61pZwTBSQAVjLNJnJTlU4yh/DxKU 
B3opw7JvvgXYB3VS9AyqSYaIJTcziCBZRewMH+WVpZwRk9SFMyeyNhuk9SGeGU9s 
vyE5dGPa/U5zpvhaqn//CMdRr+wf6XeBKjzc9eKgWMrPLhzlHZ6kzLsbRsalOd4x 
0M3aeO4SV00HFFfXVfJplNB8/zsHNNqtF5ACz9DX69p1GWJD6AAlu/s04xkkUScr 
M2B5lHm6iU6NmfP1GeTD+rOyigcOrSlAL4QGIzGDfoDJOy9UYtk+YOv8UBa3IpG0 
7sARkd+MZGUOgPWIDYQLiSi+9opFHtn4EzrvuUP3Zj1kN4ZUTwARAQABiQElBBgB 
AgAPBQJTnwZpAhsMBQkJZgGAAAoJEEWjhuB1kNr9kHoIAKnjEAiH53ZrWYuummPR 
PRztZL1K7LkxEAxQ00V+PMrg4wNlp1WW5Vl3X0jB5FqUTUmI/65MhoWa+Ucqg31c 
pUOpw5OHK/cyrsscj+gL3nknhswWcvqBNQuiB8UO7Kt89yFYysA754sADKE+nDBM 
D+kmlH4u3vvKep0hZ+gzvH3AOZDhijKJYN9zMMf/gtwZhlEm/N+yBpkP1sxcFsJ+ 
V5hduu4sqJnAcCWg3V/JXonAOZGPS/GE+wXt4Om1D/6RcBBtrBGwh/ezBFS/gSio 
vGRcFzZYRhM1rMEu82raZ3ji3X/5fOjxvhSXdrajG3LX8s2gCk+a0nGDi3MYs5l0 
p14= 
=cn4r 
-----END PGP PUBLIC KEY BLOCK----- 

Je veux écrire un programme en php qui vérifiera la signature numérique. J'ai la clé publique de l'expéditeur. J'ai essayé de télécharger la bibliothèque GnuPG de this site, mais il n'est pas téléchargé.

Existe-t-il un autre moyen? Comment dois-je le faire? Toute aide serait appréciée.

+0

bien je n'ai pas encore essayé, prendre regarder http://php.net/manual/en/function.openssl-verify.php cela pourrait vous aider à –

+1

juste invoquez la ligne de commande 'gpg' de PHP au lieu . – mario

+0

@mario J'ai appelé gpg depuis la ligne de commande. Quand j'utilise la commande 'gpg --version' en utilisant la fonction exec(), elle retourne array mais quand j'essaie d'importer ou de vérifier, elle retourne un tableau vide. des idées? –

Répondre

1

PHP apporte déjà un module for interfacing GnuPG, ce qui est assez facile à utiliser. GnuPG doit déjà être installé, sur les serveurs Linux habituels, sur des machines Windows. J'ai entendu parler de l'utilisation de PHP avec GnuPG plutôt difficile.

Pour vérification des signatures, utilisez gnupg_verify(...), par exemple à partir de la documentation PHP liée:

<?php 
$plaintext = ""; 
$gpg = new gnupg(); 
// clearsigned 
$info = $gpg -> verify($signed_text,false,$plaintext); 
print_r($info); 
// detached signature 
$info = $gpg -> verify($signed_text,$signature); 
print_r($info); 
?> 

Vous devrez import the signer's public key avant de vérifier, sinon déjà fait.