(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
openssl_sign — İmza üretir
$veri
,&$imza
,$gizli_anahtar
,$algoritma
= OPENSSL_ALGO_SHA1
gizli_anahtar
ı kullanarak kriptografik bir imza
üreterek belirtilen veri
için bir imza hesaplar.
Veri şifrelenmez.
veri
İmzalanacak veri.
imza
İşlem başarılı olursa imza bu bağımsız değişkene konur.
gizli_anahtar
İmza bu anahtar kullanılarak oluşturulur. Ya bir OpenSSLAsymmetricKey örneğidir; openssl_get_privatekey() ile üretilir.
Ya da PEM biçemli bir anahtar dizgesidir.
algoritma
int türünde, İmzalama algoritmalarından biri.
string türünde, openssl_get_md_methods() işlevinden döndürülmüş geçerli bir dizge (örn: "sha256WithRSAEncryption" veya "sha384".
Sürüm: | Açıklama |
---|---|
8.0.0 |
genel_anahtar artık
OpenSSLAsymmetricKey veya
OpenSSLCertificate örneği kabul ediyor;
evvelce, OpenSSL key veya OpenSSL
X.509 özkaynağı kabul edilirdi.
|
Örnek 1 - openssl_sign() örneği
<?php
// $veri'nin imzalanacak veriyi içerdiği varsayılıyor
// Gizli anahtarı dosyadan alıp hazırla
$pkeyid = openssl_pkey_get_private("file://src/openssl-0.9.6/demos/sign/key.pem");
// İmzayı hesapla
openssl_sign($veri, $imza, $genankim);
// Anahtar belleğini serbest bırak
openssl_free_key($genankim);
?>
Örnek 2 - openssl_sign() örneği
<?php
// imzalanacak veri
$data = 'my data';
// genel ve gizli anahtarları üret
$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'];
// imzayı üret
openssl_sign($data, $signature, $private_key_pem, OPENSSL_ALGO_SHA256);
// kullanmak üzere kaydet
file_put_contents('private_key.pem', $private_key_pem);
file_put_contents('public_key.pem', $public_key_pem);
file_put_contents('signature.dat', $signature);
// imzayı doğrula
$r = openssl_verify($data, $signature, $public_key_pem, "sha256WithRSAEncryption");
// göster
var_dump($r);
?>