Πώς να κρυπτογραφήσετε και να αποκρυπτογραφήσετε τη συμβολοσειρά στην PHP;

Pos Na Kryptographesete Kai Na Apokryptographesete Te Symboloseira Sten Php



Κρυπτογράφηση είναι η διαδικασία μετατροπής δεδομένων σε μυστικό κωδικό ή μορφή που δεν είναι κατανοητή σε όποιον δεν έχει το κλειδί για να τα αποκωδικοποιήσει. Αποκρυπτογράφηση είναι η διαδικασία για τη λήψη αυτών των πληροφοριών και την επιστροφή τους στην αρχική, αναγνώσιμη μορφή τους. Στην PHP, κρυπτογράφηση, και αποκρυπτογράφηση μπορεί να χρησιμοποιηθεί για την προστασία ευαίσθητων δεδομένων, όπως κωδικούς πρόσβασης, πληροφορίες πιστωτικών καρτών και άλλα προσωπικά δεδομένα.

ο κρυπτογράφηση Ο αλγόριθμος θα πρέπει να λάβει μια σειρά δεδομένων που θέλετε να κρυπτογραφήσετε και να χρησιμοποιήσει την επιλεγμένη μέθοδο κρυπτογράφησης για την κρυπτογράφηση των δεδομένων. Στη συνέχεια, ο αλγόριθμος θα πρέπει να επιστρέψει τα κρυπτογραφημένα δεδομένα σε μια μορφή που μπορείτε να αποθηκεύσετε σε μια βάση δεδομένων ή ένα αρχείο.

Προς την αποκρυπτογράφηση τα δεδομένα, θα πρέπει να χρησιμοποιήσετε την ίδια μέθοδο κρυπτογράφησης για την αποκρυπτογράφηση των δεδομένων που χρησιμοποιήθηκαν για την κρυπτογράφηση τους. Αυτό σημαίνει ότι θα χρειαστεί να αποθηκεύσετε το κλειδί κάπου ώστε να μπορείτε να το χρησιμοποιήσετε για να αποκωδικοποιήσετε τα δεδομένα αργότερα.







Πώς να κρυπτογραφήσετε και να αποκρυπτογραφήσετε μια συμβολοσειρά PHP;

Μια συμβολοσειρά PHP μπορεί να είναι κρυπτογραφημένο και αποκρυπτογραφημένο χρησιμοποιώντας την openssl_encrpyt() και openssl_decrypt() μεθόδους, αντίστοιχα.



Κρυπτογράφηση συμβολοσειράς χρησιμοποιώντας τη συνάρτηση openssl_encrypt().

Προς την κρυπτογράφηση μιας συμβολοσειράς σε PHP χρησιμοποιώντας το openssl_encrypt() λειτουργία, πρέπει να παρέχετε τη συμβολοσειρά απλού κειμένου, τη μέθοδο κρυπτογράφησης και ένα κλειδί. Η λειτουργία θα επιστρέψει τα κρυπτογραφημένα δεδομένα, τα οποία στη συνέχεια μπορείτε να αποθηκεύσετε ή να μεταδώσετε με ασφάλεια.



Η σύνταξη για openssl_encrypt() μέθοδος είναι:





συμβολοσειρά openssl_encrypt ( σειρά $δεδομένα , σειρά $μέθοδος , σειρά $κλειδί , $επιλογές = 0 , σειρά $iv , σειρά $tag = ΜΗΔΕΝΙΚΟ , σειρά $ εσείς , ενθ $tag_length = 16 )
  • $data: Η συμβολοσειρά ή τα δεδομένα που θέλετε να κρυπτογραφήσετε.
  • $method: Η μέθοδος κρυπτογράφησης ή ο κρυπτογράφησης που θέλετε να χρησιμοποιήσετε. Μπορείτε να αποκτήσετε μια λίστα με υποστηριζόμενες μεθόδους κρυπτογράφησης χρησιμοποιώντας το openssl_get_cipher_methods()
  • $key: Το κλειδί κρυπτογράφησης που θα χρησιμοποιηθεί για την κρυπτογράφηση των δεδομένων. Θα πρέπει να είναι μια συμβολοσειρά κατάλληλου μήκους και τυχαίας, με βάση την επιλεγμένη μέθοδο κρυπτογράφησης.
  • $options: Μια προαιρετική παράμετρος που μπορεί να περιλαμβάνει πρόσθετες σημαίες για συγκεκριμένες επιλογές κρυπτογράφησης. Μπορείτε να συνδυάσετε σημαίες χρησιμοποιώντας το bitwise Ή (|) Οι κοινές σημαίες περιλαμβάνουν OPENSSL_RAW_DATA και OPENSL_ZERO_PADDING .
  • $iv: Το διάνυσμα αρχικοποίησης (iv) που χρησιμοποιείται για την κρυπτογράφηση. θα πρέπει να είναι μια τυχαία και μοναδική τιμή, που παρέχεται ως συμβολοσειρά.
  • $tag: Μια προαιρετική παράμετρος που χρησιμοποιείται για λειτουργίες κρυπτογράφησης AEAD (Authenticated Encryption with Associated Data), όπως GCM (Galois/Counter Mode) ή CCM (Counter with CBC-MAC). Αποθηκεύει την ετικέτα ελέγχου ταυτότητας που δημιουργείται κατά την κρυπτογράφηση.
  • Τα δικα σου: Πρόσθετα επαληθευμένα δεδομένα που μπορούν να χρησιμοποιηθούν για λειτουργίες κρυπτογράφησης AEAD.
  • $tag_length: Το μήκος της ετικέτας ελέγχου ταυτότητας. Για τη λειτουργία GCM, το μήκος της ετικέτας κυμαίνεται από 4 έως 16 byte.

Για παράδειγμα:


$simple_string = 'Καλώς ήρθατε στο Linuxhint \n ' ;
ηχώ 'Αρχική συμβολοσειρά:' . $simple_string ;
$κρυπτογράφηση = 'AES-128-CTR' ;
$iv_length = openssl_cipher_iv_length ( $κρυπτογράφηση ) ;
$επιλογές = 0 ;
$encryption_iv = '1234567891011121' ;
$encryption_key = 'Linux' ;
$κρυπτογράφηση = openssl_encrypt ( $simple_string , $κρυπτογράφηση ,
$encryption_key , $επιλογές , $encryption_iv ) ;
ηχώ 'Κρυπτογραφημένη συμβολοσειρά:' . $κρυπτογράφηση . ' \n ' ;
?>

Ο κώδικας δηλώνει πρώτα το βασικό κείμενο “Καλώς ήρθατε στο Linuxhint” και χρησιμοποιεί την εντολή echo για να το δείξει. Στη συνέχεια, καθορίζει τον αλγόριθμο κρυπτογράφησης που θα χρησιμοποιηθεί, AES-128-CTR . Χρησιμοποιεί επίσης το openssl_cipher_iv_length() συνάρτηση για τον υπολογισμό του μεγέθους του διάνυσμα αρχικοποίησης (IV) χρειάζεται για αυτόν τον κρυπτογράφηση.



Ο κωδικός ορίζει την κρυπτογράφηση iv αξία σε «1234567891011121» και το κλειδί κρυπτογράφησης για 'Linux' . Η κρυπτογραφημένη συμβολοσειρά εμφανίζεται στη συνέχεια χρησιμοποιώντας την εντολή echo μόλις ολοκληρωθεί η κρυπτογράφηση χρησιμοποιώντας το openssl_encrypt() λειτουργία. Λόγω του διανύσματος τυχαίας προετοιμασίας που χρησιμοποιείται για την κρυπτογράφηση, η τελική κρυπτογραφημένη συμβολοσειρά θα ποικίλλει κάθε φορά.

Αποκρυπτογράφηση συμβολοσειράς χρησιμοποιώντας τη συνάρτηση openssl_decrypt().

Για να αποκρυπτογραφήσετε μια συμβολοσειρά στην PHP, μπορείτε να χρησιμοποιήσετε το openssl_decrypt() λειτουργία. Αυτή η συνάρτηση παίρνει τα κρυπτογραφημένα δεδομένα, τη μέθοδο κρυπτογράφησης και το κλειδί ως είσοδο και επιστρέφει το αποκρυπτογραφημένο απλό κείμενο.

Η σύνταξη για openssl_decrypt() μέθοδος είναι:

συμβολοσειρά openssl_decrypt ( σειρά $δεδομένα , σειρά $μέθοδος , σειρά $κλειδί , ενθ $επιλογές = 0 , σειρά $iv , σειρά $tag , σειρά $ εσείς )

Τα ορίσματα που μεταβιβάζονται στη συνάρτηση είναι:

  • $data: Η κρυπτογραφημένη συμβολοσειρά ή δεδομένα που θέλετε να αποκρυπτογραφήσετε.
  • $method: Η μέθοδος ή ο κρυπτογράφησης που χρησιμοποιείται κατά την κρυπτογράφηση. Μπορείτε να αποκτήσετε μια λίστα με υποστηριζόμενες μεθόδους κρυπτογράφησης χρησιμοποιώντας το openssl_get_cipher_methods()
  • $key: Το κλειδί κρυπτογράφησης που χρησιμοποιήθηκε για την κρυπτογράφηση των δεδομένων. Θα πρέπει να ταιριάζει με το κλειδί που χρησιμοποιείται κατά την κρυπτογράφηση.
  • $options: Μια προαιρετική παράμετρος που μπορεί να περιλαμβάνει πρόσθετες σημαίες για συγκεκριμένες επιλογές αποκρυπτογράφησης. Μπορείτε να συνδυάσετε σημαίες χρησιμοποιώντας τον τελεστή bitwise OR (|). Οι κοινές σημαίες περιλαμβάνουν OPENSSL_RAW_DATA και OPENSL_ZERO_PADDING .
  • $iv: ο διάνυσμα αρχικοποίησης (IV) χρησιμοποιείται κατά την κρυπτογράφηση. Θα πρέπει να είναι το ίδιο IV που χρησιμοποιήθηκε κατά την κρυπτογράφηση και πέρασε ως συμβολοσειρά.
  • $tag: Η ετικέτα ελέγχου ταυτότητας για λειτουργίες κρυπτογράφησης AEAD (Authenticated Encryption with Associated Data), όπως GCM (Galois/Counter Mode) ή CCM (Counter with CBC-MAC). Εάν ο έλεγχος ταυτότητας αποτύχει, η openssl_decrypt() θα επιστρέψει FALSE.
  • Τα δικα σου: Πρόσθετα επαληθευμένα δεδομένα που χρησιμοποιήθηκαν κατά την κρυπτογράφηση για λειτουργίες κρυπτογράφησης AEAD.

Αξία επιστροφής: Εάν είναι επιτυχής, επιστρέφει την αποκρυπτογραφημένη συμβολοσειρά. διαφορετικά, επιστρέφει FALSE.

Για παράδειγμα:


$encrypted_string = 'rKaeYsYaNjkVbRPmJizrdX0xutLE' ;
ηχώ 'Κρυπτογραφημένη συμβολοσειρά:' . $encrypted_string . ' \n ' ;
$decryption_iv = '1234567891011121' ;
$κρυπτογράφηση = 'AES-128-CTR' ;
$επιλογές = 0 ;
$decryption_key = 'Linux' ;
$αποκρυπτογράφηση = openssl_decrypt ( $encrypted_string , $κρυπτογράφηση ,
$decryption_key , $επιλογές , $decryption_iv ) ;
ηχώ 'Αποκρυπτογραφημένη συμβολοσειρά:' . $αποκρυπτογράφηση ;
?>

Το μήκος του διανύσματος σε αυτόν τον κώδικα υπολογίζεται χρησιμοποιώντας το openssl_cipher_iv_length() λειτουργία και οι ίδιες παράμετροι κρυπτογράφησης iv και βασικές χρησιμοποιούνται κατά την κρυπτογράφηση. Ο αλγόριθμος κρυπτογράφησης ορίζεται ως AES-128-CTR .

Η προηγουμένως κρυπτογραφημένη συμβολοσειρά αποκρυπτογραφείται χρησιμοποιώντας τον αλγόριθμο κρυπτογράφησης, το κλειδί κρυπτογράφησης, τις ρυθμίσεις και τις τιμές IV από το openssl_decrypt() λειτουργία. Το αποκρυπτογραφημένο κείμενο που προκύπτει εμφανίζεται στη συνέχεια χρησιμοποιώντας την εντολή echo.

συμπέρασμα

Η δημιουργία ιστοσελίδων συχνά περιλαμβάνει κρυπτογράφηση και αποκρυπτογράφηση δεδομένα. Χρησιμοποιώντας κρυπτογράφηση για την προστασία ευαίσθητων δεδομένων, μπορείτε να αποφύγετε την έκθεση των χρηστών σας σε κλοπή ταυτότητας, απάτη και άλλες απειλές ασφαλείας. Οι συμβολοσειρές στην PHP μπορούν να κρυπτογραφηθούν και να αποκρυπτογραφηθούν από τις συναρτήσεις openssl_encrypt() και openssl_decrypt() λειτουργίες. Χρησιμοποιώντας προσεκτικά τον αλγόριθμο και το κλειδί κρυπτογράφησης, μπορείτε να δημιουργήσετε ένα ισχυρό και ασφαλές σύστημα για το χειρισμό ευαίσθητων δεδομένων στις εφαρμογές σας PHP.