
libsodium 기반의 고수준 암호화 인터페이스
Halite는 모든 내부 암호화 작업을 libsodium에 의존하는 고수준 암호화 인터페이스입니다.
Halite는 Paragon Initiative Enterprises가 생태계를 개선하고 PHP에서의 암호화를 더 안전하고 구현하기 쉽게 만들기 위한 지속적인 노력의 결과로 만들었습니다.
Halite 문서를 온라인에서 읽을 수 있습니다.
Halite는 Mozilla Public License 2.0으로 배포됩니다. 파생 저작물을 MPL 조건으로 공개하지 않고 Halite를 확장하려는 경우 Paragon Initiative Enterprises에서 상업용 라이선스를 제공합니다.
백엔드 웹 애플리케이션용 MPL 소프트웨어 조건에 만족하지만 Halite를 사용하는 애플리케이션에 대한 지원 계약을 구매하려는 경우에도 Paragon Initiative Enterprises에서 제공합니다.
중요: Halite의 이전 버전은 GNU Public License 버전 3(GPLv3)으로 제공되었습니다. Mozilla Public License 조건으로 제공되는 것은 Halite 4.0.1 이상부터입니다.
Halite를 사용하려면 먼저 프로젝트 요구 사항에 맞는 버전을 선택해야 합니다. 사용 가능한 Halite 버전 간 요구 사항 차이는 아래에 간략히 설명되어 있습니다.
| PHP | libsodium | PECL libsodium | 지원 여부 | |
|---|---|---|---|---|
| Halite 5.1 이상 | 8.1.0 | 1.0.18 | N/A(표준) | ✔️ 활성 |
| Halite 5.0.x | 8.0.0 | 1.0.18 | N/A(표준) | ✔️ 활성 |
| Halite 4.1+ | 7.2.0 | 1.0.15 | N/A(표준) | ❌ 지원 안 함 |
| Halite 4.0 | 7.2.0 | 1.0.13 | N/A(표준) | ❌ 지원 안 함 |
| Halite 3 | 7.0.0 | 1.0.9 | 1.0.6 / 2.0.4 | ❌ 지원 안 함 |
| Halite 2 | 7.0.0 | 1.0.9 | 1.0.6 | ❌ 지원 안 함 |
| Halite 1 | 5.6.0 | 1.0.6 | 1.0.2 | ❌ 지원 안 함 |
참고: Halite 5.0.x는 PHP 8.0에서 작동하지만 성능은 PHP 8.1보다 낮습니다.
5.1 이전 버전의 Halite가 필요하다면 해당 분기에 관한 문서를 참조하세요.
Halite를 설치하려면 먼저 libsodium을 설치해야 합니다. PHP 확장이 필요할 수도 있고 필요하지 않을 수도 있습니다. 대부분의 경우 다음 명령을 실행합니다.
sudo apt-get install php7.2-sodium
...또는 사용 중인 운영 체제와 PHP 버전에 해당하는 명령을 실행합니다.
막혀 있다면 @aolko가 기여한 단계별 가이드가 도움이 될 수 있습니다.
필수 구성 요소를 설치한 후 Composer를 통해 Halite를 설치합니다.
composer require paragonie/halite:^5
Halite에 대한 무료 지원은 가장 최신 주요 버전(현재 5)에만 적용됩니다.
회사에서 이전 버전의 Halite 지원이 필요한 경우 Paragon Initiative Enterprises에 문의하여 상업적 지원 옵션을 알아보세요.
이전 버전의 Halite에서 쉽게 마이그레이션할 방법이 필요하다면 halite-legacy를 확인하세요.
문서를 확인하세요. 기본 Halite API는 단순함을 염두에 두고 설계되었습니다.
Symmetric\Crypto::encrypt(HiddenString, EncryptionKey): stringSymmetric\Crypto::encryptWithAD(HiddenString, EncryptionKey, string): stringSymmetric\Crypto::decrypt(string, EncryptionKey): HiddenStringSymmetric\Crypto::decryptWithAD(string, EncryptionKey, string): HiddenStringAsymmetric\Crypto::seal(HiddenString, EncryptionPublicKey): stringAsymmetric\Crypto::unseal(string, EncryptionSecretKey): HiddenStringAsymmetric\Crypto::encrypt(HiddenString, EncryptionSecretKey, EncryptionPublicKey): stringAsymmetric\Crypto::encryptWithAD(HiddenString, EncryptionSecretKey, EncryptionPublicKey, string): stringAsymmetric\Crypto::decrypt(string, EncryptionSecretKey, EncryptionPublicKey): HiddenStringAsymmetric\Crypto::decryptWithAD(string, EncryptionSecretKey, EncryptionPublicKey, string): HiddenStringSymmetric\Crypto::authenticate(string, AuthenticationKey): stringSymmetric\Crypto::verify(string, AuthenticationKey, string): boolAsymmetric\Crypto::sign(string, SignatureSecretKey): stringAsymmetric\Crypto::verify(string, SignaturePublicKey, string): bool