2010-05-10 8 views
5

के साथ स्ट्रिंग एन्क्रिप्ट और डिक्रिप्ट करें मैं निर्दिष्ट कुंजी का उपयोग करके php में स्ट्रिंग को एन्क्रिप्ट और डिक्रिप्ट करने के लिए कुछ फ़ंक्शंस ढूंढ रहा हूं।कुंजी PHP

धन्यवाद!

+1

क्या आपके पास एन्क्रिप्शन की एक विशिष्ट शैली है? – EAMann

+0

यह सवाल बहुत सामान्य है। PHP/एन्क्रिप्शन विषय पर एक पैर प्राप्त करने के लिए stackoverflow या google खोजें। – labratmatt

उत्तर

2

क्या आपने mcrypt को आजमाया है?

+0

नहीं, मैं नहीं हूं लेकिन मैं भी उस पर एक नज़र डालूंगा। –

4

एक बुनियादी openssl कार्यान्वयन में पास्कल मार्टिन के जवाब पर एक नजर है कि मैंने पहले उपयोग किया है:

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

आप की आवश्यकता होगी आरएसए कुंजी जोड़ी उत्पन्न करें। See here for information इसे कैसे करें। फ़ाइल में निजी कुंजी को संग्रहीत करना एक बुरा विचार है। यह सिर्फ एक उदाहरण है। आदर्श रूप में आप चाहते हैं कि उपयोगकर्ता डिक्रिप्शन समय

0

पर निजी कुंजी की आपूर्ति करना चाहें, मुझे लगता है कि आप सममित कुंजी एन्क्रिप्शन का मतलब है। mcrypt कई एल्गोरिदम का समर्थन करता है (एईएस, ट्रिपल डीईएस की तरह)। हालांकि एक पकड़ है, यह किसी भी पैडिंग एल्गोरिदम का समर्थन नहीं करता है, इसलिए आप मूल लंबाई वापस प्राप्त नहीं कर पाएंगे। इस समस्या को हल करने के लिए आपके पास 2 विकल्प हैं,

  1. अपने स्पष्ट टेक्स्ट के सामने एक लंबा फ़ील्ड जोड़ें। लंबाई के रूप में पहले 4 बाइट्स का उपयोग करें।

  2. क्या पीकेसीएस # 5 खुद को पैडिंग करें। इस पृष्ठ पर कोड उदाहरण हैं: http://www.php.net/manual/en/function.mcrypt-encrypt.php

संबंधित मुद्दे