2010-05-10 10 views
5

Sto cercando alcune funzioni per crittografare e decodificare le stringhe in php utilizzando una chiave specificata.Cifra e decrittografa la stringa con la chiave PHP

Grazie!

+1

Hai in mente uno stile specifico di crittografia? – EAMann

+0

Questa domanda è troppo generica. Cerca stackoverflow o google per ottenere un argomento sull'argomento PHP/Encryption. – labratmatt

risposta

2

hai provato mcrypt?

+0

No, non ho, ma vedrò anche quello. –

4

Un'implementazione di base openssl ho usato prima:

class MyEncryption 
{ 

    public $pubkey = '...public key here...'; 
    public $privkey = '...private key here...'; 

    public function encrypt($data) 
    { 
     if (openssl_public_encrypt($data, $encrypted, $this->pubkey)) 
      $data = base64_encode($encrypted); 
     else 
      throw new Exception('Unable to encrypt data. Perhaps it is bigger than the key size?'); 

     return $data; 
    } 

    public function decrypt($data) 
    { 
     if (openssl_private_decrypt(base64_decode($data), $decrypted, $this->privkey)) 
      $data = $decrypted; 
     else 
      $data = ''; 

     return $data; 
    } 
} 

Si avrebbe bisogno di generare la coppia di chiavi RSA. See here for information su come farlo. Memorizzare la chiave privata nel file stesso è una cattiva idea. Questo è solo un esempio. Idealmente vorrai che l'utente fornisca la chiave privata al momento della decodifica

0

Suppongo che tu intendessi la crittografia a chiave simmetrica. mcrypt supporta diversi algoritmi (come AES, DES di Tripel). C'è un problema, ma non supporta alcun algoritmo di padding in modo da non essere in grado di recuperare la lunghezza originale. Hai 2 opzioni per ovviare a questo problema,

  1. Aggiungi un campo lunghezza davanti al testo in chiaro. Di 'usa i primi 4 byte come lunghezza.

  2. Fare da soli PKCS # 5. Ci sono esempi di codice in questa pagina: http://www.php.net/manual/en/function.mcrypt-encrypt.php

Problemi correlati