Php/docs/function.openssl-sign

提供:Dev Guides
< Php
移動先:案内検索

openssl_sign

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

openssl_sign署名を生成する


説明

openssl_sign ( string $data , string &$signature , mixed $priv_key_id [, mixed $signature_alg = OPENSSL_ALGO_SHA1 ] ) : bool

openssl_sign() は、指定した data の署名を作ります。 priv_key_id で指定した秘密鍵を使用して、暗号のデジタル署名を生成します。 data 自体は暗号化されないことに注意してください。


パラメータ

data

署名したいデータの文字列。

signature

成功した場合、署名が signature に格納されます。

priv_key_id

resource - openssl_get_privatekey() が返す鍵。

string - PEM フォーマットの鍵。

signature_alg

int - いずれかの 署名アルゴリズム

string - openssl_get_md_methods() が返す文字列 ("sha256WithRSAEncryption" や "sha384" など)。


返り値

成功した場合に true を、失敗した場合に false を返します。


例1 openssl_sign() の例

<?php// $data に署名するデータが含まれていると仮定// ファイルから秘密鍵を取得して準備$pkeyid = openssl_pkey_get_private("file://src/openssl-0.9.6/demos/sign/key.pem");// 署名を計算openssl_sign($data, $signature, $pkeyid);// メモリからキーを開放するopenssl_free_key($pkeyid);?>

例2 openssl_sign() の例

<?php// 署名したいデータ$data = 'my data';// 新しい秘密鍵と公開鍵を作成$new_key_pair = openssl_pkey_new(array(    "private_key_bits" => 2048,    "private_key_type" => OPENSSL_KEYTYPE_RSA,));openssl_pkey_export($new_key_pair, $private_key_pem);$details = openssl_pkey_get_details($new_key_pair);$public_key_pem = $details['key'];// 署名を作成openssl_sign($data, $signature, $private_key_pem, OPENSSL_ALGO_SHA256);// それらを保存file_put_contents('private_key.pem', $private_key_pem);file_put_contents('public_key.pem', $public_key_pem);file_put_contents('signature.dat', $signature);// 署名を検証$r = openssl_verify($data, $signature, $public_key_pem, "sha256WithRSAEncryption");var_dump($r);?>

参考