Tôi đang cố gắng tạo một thư viện trạng thái cho OpenID để được sử dụng làm plugin Wordpress, tôi đang gặp sự cố khi cố gắng tính toán giá trị bí mật bằng cách sử dụng hàm openssl openssl_dh_compute_key. Tò mò nếu có ai đó có một số bước tôi có thể thử, gợi ý, v.v ...Sự cố với tính năng bí mật được chia sẻ của khóa Diffie Hellman cho OpenID
Cảm ơn!
Các hằng số ...
const DH_DEFAULT_PRIME = "dcf93a0b883972ec0e19989ac5a2ce310e1d37717e8d9571bb7623731866e61ef75a2e27898b057f9891c2e27a639c3f29b60814581cd3b2ca3986d2683705577d45c2e7e52dc81c7a171876e5cea74b1448bfdfaf18828efd2519f14e45e3826634af1949e5b535cc829a483b8a76223e5d490a257f05bdff16f2fb22c583ab";
const DH_DEFAULT_GENERATOR = '02';
Tạo tôi Diffie-Hellman key
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;
}
}
Các Ag == tại nút của cả hai hình ảnh là giá trị mã hóa base64 của dh ['g'].
Sau đó, tôi lưu khoá cá nhân đã tạo vào cơ sở dữ liệu để tiếp tục, cho phép tôi tạo lại khóa đó qua hàm openssl_pkey_get_private.
Tuy nhiên, lấy lại openid.dh_server_public từ yêu cầu hiệp hội, và đi qua nó, và chính tôi lại được tạo ra từ các kết quả khóa riêng trong một sai cho
var_dump(openssl_dh_compute_key($this->op_pubkey, $this->dh));
Tôi thực sự muốn chức năng này được ghi nhận tốt hơn! : \ –
Bây giờ là ... xem http://php.net/manual/en/function.openssl-dh-compute-key.php – velcrow