0

秘密鍵で暗号化する必要があり、次のコードで暗号化しようとしています:

$content = file_get_contents("file.key");

$plaintext = "14d9df79-8c4c-4380-8444-d31e1fd3f78a";

openssl_private_encrypt($plaintext, $encrypted, $content);

$transfer = base64_encode($encrypted);

echo "text encrypted is:" . $transfer;  //encrypted string

次のエラーが表示されます: openssl_private_encrypt(): key param is not a valid private key in

キーファイルに対して何かをする必要がありますか? バイナリです。

4

3 に答える 3

3

まず、openssl を使用してキーを PEM 形式に変換してみます。

openssl rsa -inform der -in file.key -outform pem -out filekey.pem

次に、 openssl_pkey_get_privateを使用して PEM ファイルから秘密鍵を抽出します。

$key = openssl_pkey_get_private(file_get_contents("filekey.pem"));

$plaintext = "14d9df79-8c4c-4380-8444-d31e1fd3f78a";

openssl_private_encrypt($plaintext, $encrypted, $key);

$transfer = base64_encode($encrypted);

echo "text encrypted is:" . $transfer;  //encrypted string
于 2013-01-23T23:12:42.930 に答える
2

.key 拡張子を使用した x509 ファイル形式は知りません。pem (openssl にロードする必要がある形式)、DER (ファイルには .der、.crt、または .cer 拡張子が付いている場合があります)、または PKCS#12 (.pfx .p12) があります。おそらくDER または PKCS#12 です

 openssl pkcs12 -in file.key -out file.pem -nodes

...PKCS#12 を file.pem に変換します。

openssl x509 -inform der -in file.key -out file.pem

...DER ファイルを変換します。ファイル形式が間違っている場合、エラーが報告されます。OTOH 'file' コマンドを使用して、ファイルの種類を調べることができます。(これは、あなたが Posix / Linux システムを持っていることを前提としています - あなたは言いませんでした)。

または、あなたにそれを与えた人に、それがどのような形式であるかを尋ねることもできます.

于 2013-01-23T23:26:20.340 に答える
-2

解決した私はちょうど使用します

openssl pkcs8 .....

指図

これが他の誰かに役立つことを願っています

于 2013-01-24T17:49:02.510 に答える