Halite เป็นอินเทอร์เฟซการเข้ารหัสระดับสูงที่ใช้ libsodium สำหรับการดำเนินการเข้ารหัสพื้นฐานทั้งหมด
Halite ถูกสร้างขึ้นโดย Paragon Initiative Enterprises อันเป็นผลมาจากความพยายามอย่างต่อเนื่องของเราในการปรับปรุงระบบนิเวศและทำให้การเข้ารหัสใน PHP ปลอดภัยยิ่งขึ้นและง่ายต่อการนำไปใช้
คุณสามารถอ่าน เอกสาร Halite ได้ทางออนไลน์
Halite ได้รับการเผยแพร่ภายใต้ Mozilla Public License 2.0 ใบอนุญาตเชิงพาณิชย์มีให้จาก Paragon Initiative Enterprises หากคุณต้องการขยาย Halite โดยไม่ต้องเผยแพร่ผลงานลอกเลียนแบบของคุณภายใต้เงื่อนไขของ MPL
หากคุณพอใจกับข้อกำหนดของซอฟต์แวร์ MPL สำหรับแอปพลิเคชันเว็บแบ็กเอนด์ แต่ต้องการซื้อสัญญาการสนับสนุนสำหรับแอปพลิเคชันของคุณที่ใช้ Halite Paragon Initiative Enterprises ก็เสนอสัญญาดังกล่าวเช่นกัน
สำคัญ: Halite เวอร์ชันก่อนหน้ามีให้ใช้งานภายใต้ GNU Public License เวอร์ชัน 3 (GPLv3) เฉพาะ Halite 4.0.1 และใหม่กว่าเท่านั้นที่มีให้บริการภายใต้เงื่อนไข Mozilla Public License
ก่อนที่คุณจะสามารถใช้ Halite ได้ คุณต้องเลือกเวอร์ชันที่เหมาะกับความต้องการของโครงการของคุณ ความแตกต่างระหว่างข้อกำหนดสำหรับ Halite เวอร์ชันที่มีอยู่มีดังต่อไปนี้โดยสรุป
PHP | ลิบโซเดียม | PECL ลิบโซเดียม | สนับสนุน | |
---|---|---|---|---|
Halite 5.1 และใหม่กว่า | 8.1.0 | 1.0.18 | ไม่มี (มาตรฐาน) | คล่องแคล่ว |
ฮาไลท์ 5.0.x | 8.0.0 | 1.0.18 | ไม่มี (มาตรฐาน) | คล่องแคล่ว |
ฮาไลท์ 4.1+ | 7.2.0 | 1.0.15 | ไม่มี (มาตรฐาน) | ไม่รองรับ |
เฮไลต์ 4.0 | 7.2.0 | 1.0.13 | ไม่มี (มาตรฐาน) | ไม่รองรับ |
ฮาไลท์ 3 | 7.0.0 | 1.0.9 | 1.0.6 / 2.0.4 | ไม่รองรับ |
ฮาไลท์ 2 | 7.0.0 | 1.0.9 | 1.0.6 | ไม่รองรับ |
ฮาไลท์ 1 | 5.6.0 | 1.0.6 | 1.0.2 | ไม่รองรับ |
หมายเหตุ: Halite 5.0.x ใช้งานได้กับ PHP 8.0 แต่ประสิทธิภาพแย่กว่า PHP 8.1
หากคุณต้องการเวอร์ชัน Halite ก่อน 5.1 โปรดดูเอกสารที่เกี่ยวข้องกับสาขานั้น ๆ
หากต้องการติดตั้ง Halite คุณต้องติดตั้ง libsodium ก่อน คุณอาจต้องการหรือไม่ต้องการส่วนขยาย PHP สำหรับคนส่วนใหญ่ นี่หมายถึงการวิ่ง...
sudo apt-get install php7.2-sodium
...หรือคำสั่งที่เทียบเท่าสำหรับระบบปฏิบัติการและเวอร์ชัน PHP ของคุณ
หากคุณติดขัด คำแนะนำทีละขั้นตอนที่สนับสนุนโดย @aolko อาจเป็นประโยชน์
เมื่อคุณติดตั้งข้อกำหนดเบื้องต้นแล้ว ให้ติดตั้ง Halite ผ่าน Composer:
composer require paragonie/halite:^5
การสนับสนุนฟรี (ฟรี) สำหรับ Halite จะขยายไปถึงเวอร์ชันหลักล่าสุดเท่านั้น (ปัจจุบันคือ 5)
หากบริษัทของคุณต้องการการสนับสนุน Halite เวอร์ชันเก่า โปรดติดต่อ Paragon Initiative Enterprises เพื่อสอบถามเกี่ยวกับตัวเลือกการสนับสนุนเชิงพาณิชย์
หากคุณต้องการวิธีง่ายๆ ในการย้ายจาก Halite เวอร์ชันเก่า ลองดู Halite-legacy
ตรวจสอบเอกสาร Halite API พื้นฐานได้รับการออกแบบมาให้เรียบง่าย:
SymmetricCrypto::encrypt
( HiddenString
, EncryptionKey
): string
SymmetricCrypto::encryptWithAD
( HiddenString
, EncryptionKey
, string
): string
SymmetricCrypto::decrypt
( string
, EncryptionKey
): HiddenString
SymmetricCrypto::decryptWithAD
( string
, EncryptionKey
, string
): HiddenString
AsymmetricCrypto::seal
( HiddenString
, EncryptionPublicKey
): string
AsymmetricCrypto::unseal
( string
, EncryptionSecretKey
): HiddenString
AsymmetricCrypto::encrypt
( HiddenString
, EncryptionSecretKey
, EncryptionPublicKey
): string
AsymmetricCrypto::encryptWithAD
( HiddenString
, EncryptionSecretKey
, EncryptionPublicKey
, string
): string
AsymmetricCrypto::decrypt
( string
, EncryptionSecretKey
, EncryptionPublicKey
): HiddenString
AsymmetricCrypto::decryptWithAD
( string
, EncryptionSecretKey
, EncryptionPublicKey
, string
): HiddenString
SymmetricCrypto::authenticate
( string
, AuthenticationKey
): string
SymmetricCrypto::verify
( string
, AuthenticationKey
, string
): bool
AsymmetricCrypto::sign
( string
, SignatureSecretKey
): string
AsymmetricCrypto::verify
( string
, SignaturePublicKey
, string
): bool
ขั้นแรก สร้างและคงคีย์ไว้เพียงครั้งเดียว:
<?php
use ParagonIE Halite KeyFactory ;
$ encKey = KeyFactory:: generateEncryptionKey ();
KeyFactory:: save ( $ encKey , ' /path/outside/webroot/encryption.key ' );
จากนั้นคุณสามารถเข้ารหัส/ถอดรหัสข้อความได้ดังนี้:
<?php
use ParagonIE Halite KeyFactory ;
use ParagonIE Halite Symmetric Crypto as Symmetric ;
use ParagonIE HiddenString HiddenString ;
$ encryptionKey = KeyFactory:: loadEncryptionKey ( ' /path/outside/webroot/encryption.key ' );
$ message = new HiddenString ( ' This is a confidential message for your eyes only. ' );
$ ciphertext = Symmetric:: encrypt ( $ message , $ encryptionKey );
$ decrypted = Symmetric:: decrypt ( $ ciphertext , $ encryptionKey );
var_dump ( $ decrypted -> getString () === $ message -> getString ()); // bool(true)
สิ่งนี้ควรสร้างสิ่งที่คล้ายกับ:
MUIDAEpQznohvNlQ-ZRk-ZZ59Mmox75D_FgAIrXY2cUfStoeL-GIeAe0m-uaeURQdPsVmc5XxRw3-2x5ZAsZH_es37qqFuLFjUI-XK9uG0s30YTsorWfpHdbnqzhRuUOI09c-cKrfMQkNBNm0dDDwZazjTC48zWikRHSHXg8NXerVDebzng1aufc_S-osI_zQuLbZDODujEnpbPZhMMcm4-SWuyVXcBPdGZolJyT
สิ่งสำคัญ : Halite ใช้งานได้กับวัตถุ
Key
ไม่ใช่สตริง
หากคุณพยายาม echo
วัตถุหลัก คุณจะได้รับสตริงว่างแทนที่จะเป็นเนื้อหา หากคุณพยายาม var_dump()
วัตถุคีย์ คุณจะได้รับข้อเท็จจริงบางอย่างเกี่ยวกับประเภทของคีย์นั้น
คุณต้องเรียกใช้ $obj->getRawKeyMaterial()
อย่างชัดเจนหากคุณต้องการตรวจสอบเนื้อหาไบนารีดิบของคีย์ ไม่แนะนำสำหรับกรณีการใช้งานส่วนใหญ่
<?php
use ParagonIE Halite KeyFactory ;
use ParagonIE HiddenString HiddenString ;
$ passwd = new HiddenString ( ' correct horse battery staple ' );
// Use random_bytes(16); to generate the salt:
$ salt = "xddx7bx1ex38x75x9fx72x86x0axe9xc8x58xf6x16x0dx3b" ;
$ encryptionKey = KeyFactory:: deriveEncryptionKey ( $ passwd , $ salt );
คีย์ที่ได้รับจากรหัสผ่านสามารถใช้แทนคีย์ที่สร้างขึ้นแบบสุ่มได้
Halite มีคลาสการเข้ารหัสไฟล์ที่ใช้ API การสตรีมเพื่ออนุญาตให้เข้ารหัสไฟล์ขนาดใหญ่ (เช่น กิกะไบต์) บนระบบที่มีหน่วยความจำเหลือน้อยมาก (เช่น น้อยกว่า 8 MB)
<?php
use ParagonIE Halite File ;
use ParagonIE Halite KeyFactory ;
$ encryptionKey = KeyFactory:: loadEncryptionKey ( ' /path/outside/webroot/encryption.key ' );
File:: encrypt ( ' input.txt ' , ' output.txt ' , $ encryptionKey );
ข้อผิดพลาดร้ายแรงของ PHP: Uncaught SodiumException: สิ่งนี้ไม่ได้ถูกนำมาใช้เนื่องจากไม่สามารถล้างหน่วยความจำจาก PHP ได้อย่างปลอดภัย
วิธีแก้ไขคือต้องแน่ใจว่าได้ติดตั้ง/เปิดใช้งาน libsodium แล้ว ดูด้านบนใน README นี้สำหรับข้อมูลเพิ่มเติม
หากบริษัทของคุณใช้ไลบรารีนี้ในผลิตภัณฑ์หรือบริการของตน คุณอาจสนใจซื้อสัญญาการสนับสนุนจาก Paragon Initiative Enterprises