openssl_encrypt

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

openssl_encryptVeriyi şifreler

Açıklama

openssl_encrypt(
    string$veri,
    string$yöntem,
    string$parola,
    int$seçenekler = 0,
    string$iy = "",
    string&$etiket = null,
    string$kiml_kntlı_ek_veri = "",
    int$etiket_uzunluğu = 16
): string|false

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.

Bağımsız Değişkenler

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 etiketinin uzunluğu. GCM kipinde değer 4-16 arasında olabilir.

Dönen Değerler

İşlem başarısız olursa false yoksa şifrelenmiş veri dizgesi döner.

Hatalar/İstisnalar

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 Bilgisi

Sürüm: Açıklama
7.1.0etiket, ek_kiml_knt_verisi ve etiket_uzunluğu bağımsız değişkenleri eklendi.

Örnekler

Ö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";
}
?>

Ayrıca Bakınız

To Top