array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'tr', ), 'this' => array ( 0 => 'function.openssl-encrypt.php', 1 => 'openssl_encrypt', ), 'up' => array ( 0 => 'ref.openssl.php', 1 => 'OpenSSL İşlevleri', ), 'prev' => array ( 0 => 'function.openssl-digest.php', 1 => 'openssl_digest', ), 'next' => array ( 0 => 'function.openssl-error-string.php', 1 => 'openssl_error_string', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'tr', 'path' => 'reference/openssl/functions/openssl-encrypt.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
openssl_encrypt — Veriyi şifreler
$veri
,$yöntem
,$parola
,$seçenekler
= 0,$iy
= "",&$etiket
= null
,$kiml_kntlı_ek_veri
= "",$etiket_uzunluğu
= 16
Belirtilen veri
'yi belirtilen
yöntem
ve parola
ile
şifreler ve bir base64 kodlu dizge olarak veya ham bir dizge olarak
döndürür.
veri
Şifrelenecek düz metin ileti verisi.
yöntem
Şifreleme yöntemi. Şifreleme yöntemlerinin listesi için bkz: openssl_get_cipher_methods()
parola
Parola. Beklenenden kısaysa null
ile dolgu yapılır, uzunsa kırpılır ve bunun için bir uyarı verilmez.
seçenekler
OPENSSL_RAW_DATA
ve
OPENSSL_ZERO_PADDING
sabitlerinin bitsel
birleşimi.
iy
null
olmayan bir ilklendirme yöneyi.
etiket
AEAD şifreleme kipi (GCM veya CCM) kullanıldığında gönderimli aktarılan kimlik kanıtlama etiketi.
kiml_kntlı_ek_veri
Kimlik kanıtlamasından geçmiş ek veri
etiket_uzunluğu
Kimlik kanıtlama etiket
inin uzunluğu.
GCM kipinde değer 4-16 arasında olabilir.
İşlem başarısız olursa false
yoksa şifrelenmiş veri dizgesi döner.
yöntem
bağımsız değişkeni ile bilinmeyen bir şifreleme
algoritması belirtilmişse E_WARNING
seviyesinde bir
hata oluşur.
iy
bağımsız değişkeni üzerinden boş bir dizge aktarılırsa
E_WARNING
seviyesinde bir hata oluşur.
Sürüm: | Açıklama |
---|---|
7.1.0 |
etiket ,
ek_kiml_knt_verisi ve
etiket_uzunluğu bağımsız değişkenleri eklendi.
|
Örnek 1 - PHP 7.1+ için GCM kipinde AES Kimlik Kanıtlamalı Şifreleme örneği
<?php
// $key, daha önce openssl_random_pseudo_bytes gibi kriptografik olarak
// güvenilir bir yolla oluşturulmuş olmalıdır.
$plaintext = "şifrelenecek ileti";
$cipher = "aes-128-gcm";
if (in_array($cipher, openssl_get_cipher_methods()))
{
$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$ciphertext = openssl_encrypt($plaintext, $cipher, $key, $options=0, $iv, $tag);
// Şifreyi daha sonra çözmek için $cipher, $iv ve $tag saklanacak
$original_plaintext = openssl_decrypt($ciphertext, $cipher, $key, $options=0, $iv, $tag);
echo $original_plaintext."\n";
}
?>
Örnek 2 - PHP 7.1 öncesi için GCM kipinde AES Kimlik Kanıtlamalı Şifreleme örneği
<?php
//$key evvelce openssl_random_pseudo_bytes gibi güvenli bir yolla üretilmiş olmalı
$plaintext = "şifrelenecek ileti";
$ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC");
$iv = openssl_random_pseudo_bytes($ivlen);
$ciphertext_raw = openssl_encrypt($plaintext, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv);
$hmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true);
$ciphertext = base64_encode( $iv.$hmac.$ciphertext_raw );
// daha sonra şifreyi çözmek için....
$c = base64_decode($ciphertext);
$ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC");
$iv = substr($c, 0, $ivlen);
$hmac = substr($c, $ivlen, $sha2len=32);
$ciphertext_raw = substr($c, $ivlen+$sha2len);
$original_plaintext = openssl_decrypt($ciphertext_raw, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv);
$calcmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true);
if (hash_equals($hmac, $calcmac))// timing attack safe comparison
{
echo $original_plaintext."\n";
}
?>