>백엔드 개발 >PHP 튜토리얼 >PHP에서 OpenSSL을 사용하여 파일을 어떻게 암호화하고 해독할 수 있습니까?

PHP에서 OpenSSL을 사용하여 파일을 어떻게 암호화하고 해독할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-17 02:57:03260검색

How Can I Encrypt and Decrypt Files Using OpenSSL in PHP?

MCrypt로 파일 암호화 및 복호화

Mcrypt 라이브러리는 PHP에서 암호화 및 복호화 작업을 위한 기능을 제공합니다. 다음은 파일 암호화 및 해독에 사용하는 방법에 대한 예입니다.

// ENCRYPT FILE
function encryptFile() {
    $key = generateKey(); // Function to generate a secure encryption key
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-128-cbc')); // Generate a random initialization vector

    $plaintext = file_get_contents(PATH . '/ftpd/' . $file);
    $encrypted = openssl_encrypt($plaintext, 'aes-128-cbc', $key, OPENSSL_RAW_DATA, $iv);

    $encryptedFile = fopen(PATH . '/encrypted/' . $file . '.txt', 'w');
    fwrite($encryptedFile, $iv . $encrypted);
    fclose($encryptedFile);

    unlink(PATH . '/ftpd/' . $file);
}

// DECRYPT FILE
function decryptFile() {
    $key = generateKey(); // Function to generate the same encryption key used in encryption

    if ($handle = opendir(PATH . '/encrypted')) {
        while (false !== ($file = readdir($handle))) {
            if ($file != "." && $file != "..") {
                $encryptedFile = fopen(PATH . '/encrypted/' . $file, 'r');
                $encryptedData = fread($encryptedFile, filesize(PATH . '/encrypted/' . $file));

                $iv = substr($encryptedData, 0, openssl_cipher_iv_length('aes-128-cbc'));
                $decrypted = openssl_decrypt(substr($encryptedData, openssl_cipher_iv_length('aes-128-cbc')), 'aes-128-cbc', $key, OPENSSL_RAW_DATA, $iv);

                $decryptedFile = fopen(PATH . '/decrypted/' . $file, 'w');
                fwrite($decryptedFile, $decrypted);
                fclose($decryptedFile);

                // unlink(PATH . '/encrypted/' . $file);
            }
        }
        closedir($handle);
    }
}

중요 사항:

  • MCrypt는 오래된 라이브러리이며 더 이상 존재하지 않습니다. 사용을 권장합니다. OpenSSL 또는 Libsodium과 같은 보다 새롭고 안전한 대안을 사용하는 것이 좋습니다.
  • 암호화/암호 해독 키는 안전하게 생성되고 기밀로 유지되어야 합니다.
  • 초기화 벡터(IV)는 다음을 수행하여 추가 보안을 제공합니다. 동일한 평문과 키에 대해 매번 고유한 암호문을 생성합니다.

위 내용은 PHP에서 OpenSSL을 사용하여 파일을 어떻게 암호화하고 해독할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.