Podczas wrzucania wiadomości na kolejkę (rabbitmq/ redis), warto czasami przemyśleć czy wrzucane wiadomości wymagają dodatkowego zaszyfrowania.
PHP ma wbudowane funkcje do pracy z kryptografią asymetryczną, która opiera się na parze kluczy publicznych i prywatnych. Można użyć biblioteki openssl
, aby szyfrować i deszyfrować dane za pomocą kluczy publicznych i prywatnych (zobacz jak wygenerować klucz publiczny i prywatny).
Aby szyfrować dane za pomocą klucza publicznego, możesz użyć funkcji openssl_public_encrypt()
. Na przykład:
$plaintext = "Hello, World!"; // Wczytaj klucz publiczny z pliku $publicKey = openssl_pkey_get_public("file://path/to/public_key.pem"); // Szyfruj dane za pomocą klucza publicznego openssl_public_encrypt($plaintext, $encrypted, $publicKey); // Wyświetl zaszyfrowany ciąg echo base64_encode($encrypted);
Funkcja base64_encode()
w PHP nie ma limitu znaków. Możesz zakodować dowolny ciąg znaków za jej pomocą.
Warto jednak pamiętać, że zakodowany ciąg znaków jest o około 33% dłuższy niż oryginalny ciąg, ponieważ base64 koduje każdy bajt (8 bitów) danych jako 2 znaki ASCII. Jeśli masz ograniczenie na długość ciągów znaków, np. w bazie danych lub w komunikacji sieciowej, warto uwzględnić to, planując użycie base64.
Na przykład, jeśli masz ograniczenie na długość ciągów znaków w bazie danych na 1000 znaków, możesz zakodować maksymalnie około 750 znaków danych za pomocą base64 (1000 znaków / 1,33 = 750 znaków).
Aby odszyfrować dane za pomocą klucza prywatnego, możesz użyć funkcji openssl_private_decrypt()
. Na przykład:
// Wczytaj zaszyfrowany ciąg $encrypted = base64_decode("..."); // Wczytaj klucz prywatny z pliku $privateKey = openssl_pkey_get_private("file://path/to/private_key.pem"); // Odszyfruj dane za pomocą klucza prywatnego openssl_private_decrypt($encrypted, $decrypted, $privateKey); // Wyświetl odszyfrowany ciąg echo $decrypted;
Jeśli chcesz szyfrować dane za pomocą klucza prywatnego i odszyfrowywać je za pomocą klucza publicznego, możesz użyć funkcji openssl_private_encrypt()
i openssl_public_decrypt()
w odpowiedniej kolejności.
Pamiętaj, że klucze publiczne i prywatne są parami i muszą być odpowiednio sparowane, aby szyfrowanie i deszyfrowanie działały poprawnie.
Nikt jeszcze nie komentował. Bądź pierwszy!