PHP의 ziparchive 클래스는 zip 압축 파일을 생성하고 조작하는 데 사용됩니다. ZipAchive 자체는 OpenSSL 확장과 결합 된 암호화 기능을 직접 지원하지는 않지만 압축 패키지의 암호화 및 암호 해독 처리를 구현하여 파일 보안을 개선 할 수 있습니다.
PHP 환경에서 ziparchive 및 OpenSSL 확장이 활성화되어 있는지 확인하고 php.ini에서 확장자 = zip 및 Extension = OpenSSL을 활성화 할 수 있습니다.
먼저 ZipAchive를 사용하여 Zip 파일을 만들고 대상 파일을 압축 패키지에 추가하십시오. 그런 다음 압축 파일 컨텐츠는 OpenSSL의 암호화 기능을 통해 암호화됩니다. 샘플 코드는 다음과 같습니다.
<?php
$zip = new ZipArchive();
$zipname = 'encrypted.zip';
if ($zip->open($zipname, ZipArchive::CREATE) === TRUE) {
// 파일을 추가하십시오
$zip->addFile('data.txt', 'data.txt');
$zip->close();
// 압축 패킷 데이터를 읽고 암호화하십시오
$zipdata = file_get_contents($zipname);
$encryptedzip = openssl_encrypt($zipdata, 'AES-128-CBC', 'password', OPENSSL_RAW_DATA, '1234567890123456');
file_put_contents($zipname, $encryptedzip);
echo '압축 패키지가 암호화됩니다。';
} else {
echo '압축 패키지를 만들지 못했습니다。';
}
?>
위의 예에서는 AES-128-CBC 알고리즘이 사용되고 암호는 비밀번호 이며 초기화 벡터는 1234567890123456 입니다. 필요에 따라 암호화 알고리즘과 키를 조정할 수 있습니다.
해독 할 때는 OpenSSL의 암호 해독 기능을 사용하여 압축 패킷 데이터를 복원 한 다음 ZipACHIVE를 사용하여 압축을 제거하십시오. 샘플 코드는 다음과 같습니다.
<?php
$zipname = 'encrypted.zip';
// 암호화 된 압축 패키지 내용을 읽으십시오
$encryptedzip = file_get_contents($zipname);
// 암호 해독
$decryptedzip = openssl_decrypt($encryptedzip, 'AES-128-CBC', 'password', OPENSSL_RAW_DATA, '1234567890123456');
file_put_contents($zipname, $decryptedzip);
// 打开암호 해독后的压缩包并解压
$zip = new ZipArchive();
if ($zip->open($zipname) === TRUE) {
$zip->extractTo('unzip/');
$zip->close();
echo '压缩包已암호 해독并解压缩。';
} else {
echo '압축 패키지를 열지 못했습니다。';
}
?>
동일한 알고리즘과 키가 암호 해독 단계에서 암호화 할 때와 동일한 알고리즘과 키가 데이터를 올바르게 복구하는지 확인합니다.
PHP의 ziparchive 클래스와 OpenSSL 확장을 결합함으로써 ZIP 파일의 암호화 및 암호 해독을 효과적으로 실현하여 전송 및 스토리지 중 파일의 보안을 향상시킬 수 있습니다. 이 기사의 예와 지침이 프로젝트 에이 기능을 적용하는 데 도움이되기를 바랍니다.