PHP'de Dize Nasıl Şifrelenir ve Şifresi Çözülür?

Php De Dize Nasil Sifrelenir Ve Sifresi Cozulur



şifreleme verileri gizli bir koda veya şifresini çözecek anahtara sahip olmayanların anlayamayacağı bir biçime dönüştürme işlemidir. şifre çözme bu bilgiyi alma ve orijinal, okunabilir biçimine döndürme prosedürüdür. PHP'de, şifreleme, Ve şifre çözme şifreler, kredi kartı bilgileri ve diğer kişisel veriler gibi hassas verileri korumak için kullanılabilir.

bu şifreleme algoritma, şifrelemek istediğiniz bir dizi veriyi almalı ve verileri şifrelemek için seçilen şifreleme yöntemini kullanmalıdır. Algoritma daha sonra şifrelenmiş verileri bir veritabanında veya dosyada saklayabileceğiniz bir biçimde döndürmelidir.

İle şifresini çözmek verileri şifrelemek için kullanılan verilerin şifresini çözmek için aynı şifreleme yöntemini kullanmalısınız. Bu, daha sonra verilerin kodunu çözmek için kullanabilmeniz için anahtarı bir yerde saklamanız gerekeceği anlamına gelir.







Bir PHP Dizesi Nasıl Şifrelenir ve Şifresi Çözülür?

Bir PHP dizesi olabilir şifreli Ve şifresi çözülmüş kullanmak openssl_encrpyt() Ve openssl_decrypt() sırasıyla yöntemler.



Openssl_encrypt() İşlevini Kullanarak Bir Dizgiyi Şifreleyin

İle bir diziyi şifrelemek kullanarak PHP'de openssl_encrypt() işlevi için düz metin dizesi, şifreleme yöntemi ve bir anahtar sağlamanız gerekir. İşlev, daha sonra güvenli bir şekilde saklayabileceğiniz veya iletebileceğiniz şifrelenmiş verileri döndürür.



için sözdizimi openssl_encrypt() yöntem şudur:





string openssl_encrypt ( sicim $veri , sicim $ yöntemi , sicim $anahtar , $seçenekler = 0 , sicim $iv , sicim $ etiketi = HÜKÜMSÜZ , sicim $ sen , int $etiket_uzunluğu = 16 )
  • $veri: Şifrelemek istediğiniz dize veya veriler.
  • $yöntem: Kullanmak istediğiniz şifreleme yöntemi veya şifre. kullanarak desteklenen şifreleme yöntemlerinin bir listesini elde edebilirsiniz. openssl_get_cipher_methods()
  • $anahtarı: Verileri şifrelemek için kullanılacak şifreleme anahtarı. Seçilen şifreleme yöntemine göre uygun uzunluk ve rastgelelikte bir dizi olmalıdır.
  • $seçenekler: Belirli şifreleme seçenekleri için ek işaretler içerebilen isteğe bağlı bir parametre. Bayrakları kullanarak birleştirebilirsiniz. bitsel VEYA (|) Ortak bayraklar şunları içerir: OPENSSL_RAW_DATA Ve OPENSSL_ZERO_PADDING .
  • $iv: Şifreleme için kullanılan başlatma vektörü (iv); bir dize olarak sağlanan rastgele ve benzersiz bir değer olmalıdır.
  • $ etiketi: GCM (Galois/Sayaç Modu) veya CCM (CBC-MAC ile Sayaç) gibi AEAD (İlişkili Verilerle Doğrulanmış Şifreleme) şifre modları için kullanılan isteğe bağlı bir parametre. Şifreleme sırasında oluşturulan kimlik doğrulama etiketini saklar.
  • Senin: AEAD şifre modları için kullanılabilecek ek doğrulanmış veriler.
  • $etiket_uzunluğu: Kimlik doğrulama etiketinin uzunluğu. GCM modu için, etiket uzunluğu 4 ile 16 bayt arasında değişir.

Örneğin:


$basit_dize = 'Linuxhint'e hoş geldiniz \N ' ;
Eko 'Orijinal Dizi: ' . $basit_dize ;
$şifreleme = 'AES-128-TO' ;
$iv_uzunluk = openssl_cipher_iv_length ( $şifreleme ) ;
$seçenekler = 0 ;
$encryption_iv = '1234567891011121' ;
$şifreleme_anahtarı = 'Linux' ;
$şifreleme = openssl_encrypt ( $basit_dize , $şifreleme ,
$şifreleme_anahtarı , $seçenekler , $encryption_iv ) ;
Eko 'Şifreli Dizi: ' . $şifreleme . ' \N ' ;
?>

Kod önce temel metni bildirir “Linuxhint'e Hoş Geldiniz” ve bunu göstermek için echo komutunu kullanır. Daha sonra kullanılacak şifreleme algoritmasını belirtir, AES-128-CTR . Ayrıca kullanır openssl_cipher_iv_length() boyutunu hesaplama işlevi başlatma vektörü (IV) Bu şifre için gerekli.



Kod şifrelemeyi ayarlar IV değer '1234567891011121' ve şifreleme anahtarı 'Linux' . Şifrelenmiş dizi, daha sonra, şifreleme kullanılarak tamamlandıktan sonra yankı komutu kullanılarak gösterilir. openssl_encrypt() işlev. Şifreleme için kullanılan rasgele başlatma vektörü nedeniyle, son şifrelenmiş dizi her seferinde değişecektir.

Openssl_decrypt() İşlevini Kullanarak Bir Dizinin Şifresini Çözün

PHP'de bir dizenin şifresini çözmek için şunu kullanabilirsiniz: openssl_decrypt() işlev. Bu işlev, şifrelenmiş verileri, şifreleme yöntemini ve anahtarı girdi olarak alır ve şifresi çözülmüş düz metni döndürür.

için sözdizimi openssl_decrypt() yöntem şudur:

string openssl_decrypt ( sicim $veri , sicim $ yöntemi , sicim $anahtar , int $seçenekler = 0 , sicim $iv , sicim $ etiketi , sicim $ sen )

İşleve iletilen bağımsız değişkenler şunlardır:

  • $veri: Şifresini çözmek istediğiniz şifrelenmiş dize veya veriler.
  • $yöntem: Şifreleme sırasında kullanılan şifreleme yöntemi veya şifre. kullanarak desteklenen şifreleme yöntemlerinin bir listesini elde edebilirsiniz. openssl_get_cipher_methods()
  • $anahtarı: Verileri şifrelemek için kullanılan şifreleme anahtarı. Şifreleme sırasında kullanılan anahtarla eşleşmelidir.
  • $seçenekler: Belirli şifre çözme seçenekleri için ek bayraklar içerebilen isteğe bağlı bir parametre. Bit düzeyinde OR (|) operatörünü kullanarak bayrakları birleştirebilirsiniz. Ortak bayraklar şunları içerir: OPENSSL_RAW_DATA Ve OPENSSL_ZERO_PADDING .
  • $iv: bu başlatma vektörü (IV) şifreleme sırasında kullanılır. Şifreleme sırasında kullanılan ve bir dizi olarak iletilen IV ile aynı olmalıdır.
  • $ etiketi: GCM (Galois/Sayaç Modu) veya CCM (CBC-MAC ile Sayaç) gibi AEAD (İlişkili Verilerle Doğrulanmış Şifreleme) şifre modları için kimlik doğrulama etiketi. Kimlik doğrulama başarısız olursa, openssl_decrypt() FALSE döndürür.
  • Senin: AEAD şifre modları için şifreleme sırasında kullanılan ek doğrulanmış veriler.

Geri dönüş değeri: Başarılı olursa, şifresi çözülmüş diziyi döndürür; aksi halde YANLIŞ döndürür.

Örneğin:


$şifreli_dize = 'rKaeYsYaNjkVbRPmJizrdX0xutLE' ;
Eko 'Şifreli Dizi: ' . $şifreli_dize . ' \N ' ;
$decryption_iv = '1234567891011121' ;
$şifreleme = 'AES-128-TO' ;
$seçenekler = 0 ;
$decryption_key = 'Linux' ;
$şifre çözme = openssl_decrypt ( $şifreli_dize , $şifreleme ,
$decryption_key , $seçenekler , $decryption_iv ) ;
Eko 'Şifresi Çözülmüş Dizi: ' . $şifre çözme ;
?>

Bu koddaki vektör uzunluğu, openssl_cipher_iv_length() işlevi ve şifreleme sırasında aynı şifreleme iv ve anahtar parametreleri kullanılır. Şifreleme algoritması şu şekilde tanımlanır: AES-128-CTR .

Daha önce şifrelenmiş dizenin şifresi, şifreleme algoritması, şifreleme anahtarı, ayarlar ve IV değerleri kullanılarak kullanıcı tarafından çözülür. openssl_decrypt() işlev. Ortaya çıkan şifresi çözülmüş metin daha sonra echo komutu kullanılarak gösterilir.

Çözüm

Web sitelerinin oluşturulması genellikle şunları içerir: şifreleme ve şifre çözme veri. Hassas verileri korumak için şifreleme kullanarak, kullanıcılarınızın kimlik hırsızlığı, dolandırıcılık ve diğer güvenlik tehditlerine maruz kalmasını önleyebilirsiniz. PHP'deki dizeler, işlevler tarafından şifrelenebilir ve şifreleri çözülebilir. openssl_encrypt() Ve openssl_decrypt() fonksiyonlar. Şifreleme algoritmasını ve anahtarını dikkatli bir şekilde kullanarak, PHP uygulamalarınızdaki hassas verileri işlemek için sağlam ve güvenli bir sistem oluşturabilirsiniz.