2010-05-10 14 views

Antwort

2

haben Sie versucht mcrypt?

+0

Nein, habe ich nicht, aber ich werde mir das auch ansehen. –

4

Eine grundlegende OpenSSL-Implementierung ich verwendet habe vor:

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; 
    } 
} 

Sie benötigen würde Generieren Sie das RSA-Schlüsselpaar. See here for information wie man das macht. Das Speichern des privaten Schlüssels in der Datei selbst ist eine schlechte Idee. Dies ist nur ein Beispiel. Idealerweise möchten Sie, dass der Benutzer den privaten Schlüssel zur Entschlüsselungszeit zur Verfügung stellt.

0

Ich nehme an, Sie haben die Verschlüsselung mit symmetrischen Schlüsseln gemeint. mcrypt unterstützt mehrere Algorithmen (wie AES, Tripel DES). Es gibt jedoch einen Haken: Es unterstützt keinen Füllalgorithmus, so dass Sie die ursprüngliche Länge nicht wiederherstellen können. Sie haben 2 Optionen, um dieses Problem zu umgehen,

  1. Fügen Sie ein Längenfeld vor Ihrem Klartext hinzu. Sagen wir zuerst 4 Bytes als Länge.

  2. Machen Sie PKCS # 5 auffüllen. Auf dieser Seite finden Sie Codebeispiele: http://www.php.net/manual/en/function.mcrypt-encrypt.php

Verwandte Themen