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!