2012-06-18 12 views
5

के लिए डिफी हेलमैन कुंजी के साझा रहस्य के कंप्यूटिंग के साथ समस्याएं मैं वर्डप्रेस प्लगइन के रूप में उपयोग करने के लिए ओपनआईडी के लिए एक स्टेटस लाइब्रेरी बनाने का प्रयास कर रहा हूं, जब मैं गुप्त मूल्य की गणना करने का प्रयास करता हूं तो मैं किसी समस्या में भाग रहा हूं openssl फ़ंक्शन openssl_dh_compute_key। उत्सुक अगर किसी के पास कुछ कदम हैं तो मैं कोशिश कर सकता हूं, संकेत, इत्यादि ...ओपनआईडी

धन्यवाद!

स्थिरांक ...

const DH_DEFAULT_PRIME = "dcf93a0b883972ec0e19989ac5a2ce310e1d37717e8d9571bb7623731866e61ef75a2e27898b057f9891c2e27a639c3f29b60814581cd3b2ca3986d2683705577d45c2e7e52dc81c7a171876e5cea74b1448bfdfaf18828efd2519f14e45e3826634af1949e5b535cc829a483b8a76223e5d490a257f05bdff16f2fb22c583ab"; 
const DH_DEFAULT_GENERATOR = '02'; 

बनाना मेरी Diffie-Hellman कुंजी

private function createDHKey($priv_key = false) { 
    if (!$priv_key) { 
     $details = array(); 
     $details['p'] = pack('H*', self::DH_DEFAULT_PRIME); 
     $details['g'] = pack('H*', self::DH_DEFAULT_GENERATOR); 
     $this->dh = openssl_pkey_new(array(
      'dh' => $details, 
     )); 
     if ($this->dh) { 
      return true; 
     } else { 
      error('OpenSSL failed to export your private key, ensure you have a valid configuration file, and PHP can find it.'); 
     } 
    } else { 
     $this->dh = openssl_pkey_get_private($priv_key); 
     return false; 
    } 
} 

First run of function

Recalling exported private key

दोनों छवियों के बटन पर

एजी- == है डीएच ['जी'] का बेस 64 एन्कोडेड मान।

तब मैं जेनरेट की गई निजी कुंजी को डेटाबेस में सहेजने के लिए सहेजता हूं, जो मुझे बाद में openssl_pkey_get_private फ़ंक्शन के माध्यम से कुंजी को फिर से बनाने की अनुमति देता है।

हालांकि, संबद्धता अनुरोध से लौटे लेने openid.dh_server_public, और इसे पारित, और मेरे कुंजी के लिए

var_dump(openssl_dh_compute_key($this->op_pubkey, $this->dh)); 
+0

मैं वास्तव में चाहता हूं कि इस समारोह को बेहतर तरीके से दस्तावेज किया गया हो! : \ –

+0

अब यह है ... http://php.net/manual/en/function.openssl-dh-compute-key.php देखें – velcrow

उत्तर

4

ठीक एक झूठी में निजी कुंजी परिणामों से फिर से बनाया है, अच्छी तरह से तुम्हें पता है कि वे क्या बाद में किसी समस्या पर वापस आने के बारे में कहें। मेरी "व्यक्तिगत" कोड के सभी ठीक था, यह क्या openssl_dh_compute_key सार्वजनिक कुंजी के लिए उम्मीद कर रहा था की एक गलतफहमी थी, और कैसे ओपी की सार्वजनिक कुंजी पारित हो जाता है ...

dh_server_public 
    Value: base64(btwoc(g^xb mod p)) 
    Description: The OP's Diffie-Hellman public key. 

तो, जब मैं फिर से पढ़ कि चौथे या 5 वें समय के लिए अंत में क्लिक किया गया।

"अरे, अगर मेरे कुंजी बाइनरी रूप में है, मुझे यकीन है openssl समारोह द्विआधारी उम्मीद कर रही है .."

तो, अतिरिक्त लापता कदम जा रहा है base64 डिकोडिंग समाप्त हो गया ...

openssl_dh_compute_key(base64_decode($this->op_pubkey), $this->dh); 
संबंधित मुद्दे