Cómo utilizar PHP para implementar la firma digital... Ruego el consejo de un experto...
Firma digital y verificación en php
1. Primero use php para generar un par de claves públicas y privadas.
$ RES = OpenSSL_pkey_new();
openssl_pkey_export($res, $pri);
$d = OpenSSL_pkey_get_ detalles($RES);
$pub = $d['key'];
var_dump($pri,$pub);
Genere la cadena pem con la clave privada y la clave pública, para ejemplo:
String(916) " -Iniciar clave privada-
miicdwibadangbgkqhkig 9 w 0 baqefaascamewggjdageaaogbaks 124 okan X5 JH 1Q p>
wset i80 B4 zyylyussatvs 7 ZG+ gslaox 24 tknwiy 5 cud kfk/5 qejjz 0s 8 ljrsycg
to 9 lkwqtqrky 8 bbx vcqqs 3 vxrqz 4 on 9 bmcgsylmk 6 vqxt 9 nnjpk 6 an bmje 7 z 35+8z
ttldubyamacyqrsydfbsnbgwbdagbaaecgybvoljpfmmcw 3 El 6 alhi pw 5 QJ
7 kmxdxnqmssxmvdln 4 iv 5 f 24 zm 2 jdydxmn+ST 3 fjeblefcpcoiq 5 uik x2 bno 3
< p&g 6 ii 1 wmfyqvs 2 laakj 9d 1 hqlyzvw+enezbnzznpumj G5 aj/wkuqascqqdhiffs 7 Yb 1 rbhfjmrt
ZL 4 zxuvx 1 hvjtno 2 tezwpnigpya+qhcauddep 5c 9 q//n+D+ztkbke cxpovruhsi
ko 9 jakeal 3 LHD 98 uymvehvurwummlfsw 9 slsn 7 WC 9 awd 6 mwbw 5g 8 oxtx 5 joy+ru 1 sq52d 7 rse Zr 40 fvhjtxowmudfaqjac8e+a2 epf/yenet JL 6 N2 re 8y+0
a 72 dph xy 6 vtm IPD 9 rho iz 2 MDR ZF 5 uk 7 fg 0 mio BMW 1 slw vx93 labiqjbalxpeona
B4 dqkrkfqchtyrwoercc 1y 6 fytfnj+crbzdicmfc 21 hxj 6 hky 2m 6 /xgi 3 RAE 5 l+B
mmlSmN1enhoCUqc=
-Fin de clave privada-
"
String(272) " - Iniciar clave pública:
MIG fma 0 gcsqgsib 3 dqebaqua 4 gnadcbiqkbgqcrndukjaj 1+y 4 dumlb 4 vng+Gc
mjwfera
lb 0u 2 rvhwkikmdueyjcfimuxfhsnyv+ubcy 2 devc 40 umahraps 5 mee0ky
mpaqv 1 qkeet 1 v0as+KJ/w5 nbksizcur 0 mbfttzyazomgziro 89+FVM 00y 8 hvg 2g ja
HGKq7GA34AUjQ wwIDAQAB p >
-End Public Key-
"
2. Conserve su clave privada y exponga la clave pública a otros. Si necesita firmar algunos datos para demostrar que es Enviado por usted, debe usar la clave privada:
$ RES = OpenSSL_pkey_get_private($pri);
if (openssl_sign('hello ', $out , $res))
var _ dump(base64 _ encode($ out));
En el ejemplo anterior, $pri es su clave privada y 'hello' son los datos que se van a firmar. Si la firma es exitosa, el resultado final es la firma codificada en base64, como se muestra a continuación:
j 19H+C/NQEcyowezOQ+gmgi 2 uopjnxyj+kwpkezj 5 u 4 qard 3c 4 qhfffiosypwjtj 4 ljryoipnqm 6 ICJ 2 nmdgfn/p/pp7il+xgz 2 auwdoxkjfgic/PGC 95 C 9 slh 04 TC 6 qsuv 5 IMD 9 rjbyv+ieokmlfm 9 cmtn 2 hgag 9 VQ 1s =
3. " y cadena de firma y desea verificar que proviene de usted, verifique usando su clave pública:
$SIG = base64_decode($SIG);
$RES = OpenSSL_pkey_get_public($ pubkey);
if (openssl_verify('hello ', $sig, $RES) = = 1)
// Verificación aprobada
En lo anterior Por ejemplo, el $sig original es su firma anterior codificada en base64 y $pubkey es su clave pública.
Ésta en php. La firma utiliza el algoritmo RSA y se puede usar en sistemas como single; iniciar sesión.