2010-05-10 37 views
5

Tôi đang tìm một số chức năng để mã hóa và giải mã các chuỗi trong php bằng cách sử dụng khóa được chỉ định.Mã hóa và giải mã chuỗi với khóa PHP

Cảm ơn!

+1

Bạn có một phong cách mã hóa cụ thể nào không? – EAMann

+0

Câu hỏi này quá chung chung. Tìm kiếm stackoverflow hoặc google để có được một nền tảng về chủ đề PHP/Encryption. – labratmatt

Trả lời

2

bạn đã thử mcrypt chưa?

+0

Không, tôi không thích nhưng tôi cũng sẽ xem xét điều đó. –

4

Một openssl thực hiện cơ bản tôi đã sử dụng trước đó:

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

Bạn sẽ cần phải tạo cặp khóa RSA. See here for information về cách thực hiện điều đó. Việc lưu trữ khóa cá nhân trong chính tệp đó là một ý tưởng tồi. Đây chỉ là một ví dụ. Lý tưởng nhất là bạn sẽ muốn người dùng cung cấp khóa riêng tại thời gian giải mã

0

Tôi cho rằng bạn có nghĩa là mã hóa khóa đối xứng. mcrypt không hỗ trợ một số thuật toán (Giống như AES, Tripel DES). Có một bắt mặc dù, nó không hỗ trợ bất kỳ thuật toán đệm để bạn sẽ không thể có được chiều dài ban đầu trở lại. Bạn có 2 tùy chọn để giải quyết vấn đề này,

  1. Thêm trường độ dài trước chữ rõ ràng của bạn. Nói sử dụng 4 byte đầu tiên theo chiều dài.

  2. Tự PKCS # 5 tự đệm. Có các ví dụ về mã trên trang này: http://www.php.net/manual/en/function.mcrypt-encrypt.php

Các vấn đề liên quan