2010-01-03 32 views
5

¿cómo puedo cifrar cosas con php usando una clave? Preferiría no tener que instalar Mcrypt. También necesito que el cifrado sea bastante fuerte.cifrado con php

+0

Posible duplicado de [PHP, Cifrado bidireccional más simple] (http://stackoverflow.com/questions/9262109/php-simplest-two-way-encryption) –

Respuesta

1

¿Qué tal phpseclib con por ej. AES? Utilizará mcrypt si está disponible, sino una implementación PHP nativa. Lo cual será lento, por supuesto, pero eso es inevitable.

0

De http://www.ibm.com/developerworks/opensource/library/os-php-encrypt/:

... Con PGP y otros métodos de cifrado de clave pública, no hay forma de deducir la clave privada de alguien de la clave pública.

... Una característica adicional de PGP es que la contraseña para la clave privada no es realmente una contraseña; es una frase de contraseña Y puede ser un dicho completo, que incluye signos de puntuación, espacios y todo tipo de personajes.

... Una forma de utilizar el cifrado de clave pública basado en PGP es utilizar GNU Privacy Guard (GPG). Cualquier mensaje cifrado mediante GPG se puede descifrar con GPG, PGP o cualquier cantidad de complementos de cliente de correo electrónico que admitan cualquiera de los programas. En el ejemplo, un formulario en línea acepta la entrada del usuario, incluido un mensaje; encripta ese mensaje para un destinatario particular usando GPG; luego lo envía.

Ejemplo:

<?php 
    //set up users 
    $from = "[email protected]"; 
    $to = "[email protected]"; 

    //cut the message down to size, remove HTML tags 
    $messagebody = strip_tags(substr($_POST['msg'],0,5000)); 
    $message_body = escapeshellarg($messagebody); 

    $gpg_path = '/usr/local/bin/gpg'; 
    $home_dir = '/htdocs/www'; 
    $user_env = 'web'; 

    $cmd = "echo $message_body | HOME=$home_dir USER=$user_env $gpg_path" . 
     "--quiet --no-secmem-warning --encrypt --sign --armor " . 
     "--recipient $to --local-user $from"; 

    $message_body = `$cmd`; 

    mail($to,'Message from Web Form', $message_body,"From:$from\r\n"); 

?> 
+1

¿dónde dice la pregunta en un sentido? –

0

Para el cifrado de un solo sentido, yo siempre uso phpass

Creo que trata de unos métodos de cifrado y cae de nuevo en caso de que no están disponibles en su construcción.

0

Pruebe las funciones de openssl_xxx. Están RSA y Diffie-Hellmann ahí. Tal vez más, solo trabajé con esto.

0

usando una de las muchas funciones incorporadas de php y las bibliotecas disponibles serán la mejor manera. como alternativa, es posible que desee escribir su propia clase de cifrado, similar a esta HERE en caso de que desee encriptar algo que desea pasar en la URL.