PHP 문자열 암호화 및 복호화
질문:
PHP 문자열을 어떻게 암호화하고 복호화할 수 있습니까? 원본 문자열과 둘 다에 대한 솔트 또는 키가 모두 필요합니다. 프로세스?
답변:
진행하기 전에 암호화와 인증의 차이점을 이해하는 것이 중요합니다. 강력한 보안을 위해 암호화 후 인증하는 암호화된 인증을 권장합니다.
직접 암호화를 생성하지 마세요. 대신 암호화 전문가가 개발한 신뢰할 수 있는 라이브러리를 활용하세요. 사용하기 쉽고 인증된 암호화 기능이 내장되어 있으므로 libsodium 또는 defuse/php-encryption을 사용하는 것이 좋습니다.
암호화 단계:
복호화 단계:
설계 고려 사항:
암호화를 사용하지 말아야 할 경우:
Libsodium PHP 예:
function safeEncrypt(string $message, string $key): string { if (mb_strlen($key, '8bit') !== SODIUM_CRYPTO_SECRETBOX_KEYBYTES) { throw new RangeException('Key is not the correct size (must be 32 bytes).'); } $nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES); $cipher = base64_encode( $nonce. sodium_crypto_secretbox( $message, $nonce, $key ) ); return $cipher; }
리소듐 해독:
function safeDecrypt(string $encrypted, string $key): string { $decoded = base64_decode($encrypted); $nonce = mb_substr($decoded, 0, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, '8bit'); $ciphertext = mb_substr($decoded, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, null, '8bit'); $plain = sodium_crypto_secretbox_open( $ciphertext, $nonce, $key ); return $plain; }
defuse/php-encryption 예:
use Defuse\Crypto\Crypto; use Defuse\Crypto\Key; $message = 'We are all living in a yellow submarine'; $key = Key::createNewRandomKey(); $ciphertext = Crypto::encrypt($message, $key); $plaintext = Crypto::decrypt($ciphertext, $key);
위 내용은 Libsodium 또는 defuse/php-encryption을 사용하여 PHP 문자열을 안전하게 암호화하고 해독하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!