0

この次のコードを試しました

// Create the keypair
$res=openssl_pkey_new();

// Get private key
openssl_pkey_export($res, $privatekey);

// Get public key
$publickey=openssl_pkey_get_details($res);
$publickey=$publickey["key"];

しかし、私はこのエラーが発生します

警告: openssl_pkey_export(): パラメータ 1 からキーを取得できません ... 警告: openssl_pkey_get_details() は、パラメータ 1 がリソースであると想定しています。

すでにextension=php_openssl.dllphp.ini ファイルのコメントを外しています。phpinfo()でチェックインしたときにサポートされているopenssl。混乱することはありません。この問題を解決する方法がわかりません。

4

3 に答える 3

0

次のメッセージが生成されることを確認します。

var_dump(openssl_error_string());

http://www.php.net/manual/en/function.openssl-error-string.php

于 2013-06-18T03:54:14.443 に答える
0

$resリソースであると考えられます。のリターンですopenssl_pkey_new()ドキュメントを参照してください。ただし、 FALSEの場合もあります。

表示されているようなエラーは、多くの場合、リソースを作成する関数 hereopenssl_pkey_new()が失敗したことを意味します。ドキュメントが言うように、

成功した場合は pkey のリソース識別子を返し、エラーの場合は FALSE を返します。

したがって、エラーを確認する必要があります。私はなじみがありませんが、openssl_error_string有望に見えます。

EDIT In Response : SO question openssl-not-working-on-windows . これはあなたの問題のようです。プロセスが openSSL 構成ファイルを見つけることができません。PHP によるこのOpenSLL 構成ガイドを読む

提案、リンクで説明されているように、while ループを使用してすべてのエラー メッセージを読み取ります。同じエラーの場合は、指示に従います。

于 2013-06-18T03:57:59.713 に答える
0

純粋な PHP RSA 実装である phpseclib の方がうまくいくと思います。例えば。

<?php
include('Crypt/RSA.php');

$rsa = new Crypt_RSA();

extract($rsa->createKey());

echo "$publickey<br />$privatekey";
?>

これにより、デフォルトで 1024 ビットのキーが作成されます。デフォルト設定を超えてカスタマイズする必要がある場合は、lmk.

于 2013-06-18T15:26:49.013 に答える