วิธีเข้ารหัสและถอดรหัสสตริงใน PHP

Withi Khea Rhas Laea Thxdrhas String Ni Php



การเข้ารหัส เป็นกระบวนการแปลงข้อมูลเป็นรหัสลับหรือรูปแบบที่ใครก็ตามที่ไม่มีกุญแจถอดรหัสไม่เข้าใจ ถอดรหัส เป็นขั้นตอนในการนำข้อมูลนั้นกลับมาเป็นรูปแบบเดิมที่สามารถอ่านได้ ใน PHP การเข้ารหัส, และ ถอดรหัส สามารถใช้เพื่อป้องกันข้อมูลที่ละเอียดอ่อน เช่น รหัสผ่าน ข้อมูลบัตรเครดิต และข้อมูลส่วนตัวอื่นๆ

เดอะ การเข้ารหัส อัลกอริทึมควรใช้สตริงข้อมูลที่คุณต้องการเข้ารหัสและใช้วิธีการเข้ารหัสที่เลือกเพื่อเข้ารหัสข้อมูล จากนั้นอัลกอริทึมควรส่งคืนข้อมูลที่เข้ารหัสในรูปแบบที่คุณสามารถจัดเก็บไว้ในฐานข้อมูลหรือไฟล์ได้

ถึง ถอดรหัส ข้อมูล คุณควรใช้วิธีการเข้ารหัสเดียวกันเพื่อถอดรหัสข้อมูลที่ใช้เข้ารหัส ซึ่งหมายความว่าคุณจะต้องเก็บคีย์ไว้ที่ใดที่หนึ่งเพื่อที่คุณสามารถใช้ถอดรหัสข้อมูลในภายหลังได้







จะเข้ารหัสและถอดรหัสสตริง PHP ได้อย่างไร

สตริง PHP สามารถเป็นได้ เข้ารหัส และ ถอดรหัส ใช้ opensl_encrpyt() และ opensl_decrypt() วิธีการตามลำดับ



เข้ารหัสสตริงโดยใช้ฟังก์ชัน opensl_encrypt()

ถึง เข้ารหัสสตริง ใน PHP โดยใช้ opensl_encrypt() คุณต้องระบุสตริงข้อความธรรมดา วิธีการเข้ารหัส และคีย์ ฟังก์ชันจะส่งคืนข้อมูลที่เข้ารหัส ซึ่งคุณสามารถจัดเก็บหรือส่งได้อย่างปลอดภัย



ไวยากรณ์สำหรับ opensl_encrypt() วิธีการคือ:





สตริง openssl_encrypt ( สตริง ข้อมูล $ , สตริง วิธีการ $ , สตริง $key , ตัวเลือก $ = 0 , สตริง $iv , สตริง $แท็ก = โมฆะ , สตริง $ คุณ , นานาชาติ $tag_length = 16 )
  • ข้อมูล $: สตริงหรือข้อมูลที่คุณต้องการเข้ารหัส
  • วิธีการ $: วิธีการเข้ารหัสหรือการเข้ารหัสที่คุณต้องการใช้ คุณสามารถรับรายการวิธีการเข้ารหัสที่รองรับได้โดยใช้ opensl_get_cipher_methods()
  • $คีย์: คีย์เข้ารหัสที่จะใช้ในการเข้ารหัสข้อมูล ควรเป็นสตริงที่มีความยาวและการสุ่มที่เหมาะสม ตามวิธีการเข้ารหัสที่เลือก
  • ตัวเลือก $: พารามิเตอร์เผื่อเลือกที่สามารถรวมแฟล็กเพิ่มเติมสำหรับอ็อพชันการเข้ารหัสเฉพาะ คุณสามารถรวมค่าสถานะโดยใช้ ระดับบิต OR (|) รวมค่าสถานะทั่วไป OPENSSL_RAW_DATA และ OPENSSL_ZERO_PADDING .
  • $iv: เวกเตอร์การเริ่มต้น (iv) ใช้สำหรับการเข้ารหัส ควรเป็นค่าสุ่มและไม่ซ้ำกัน โดยระบุเป็นสตริง
  • $แท็ก: พารามิเตอร์ทางเลือกที่ใช้สำหรับโหมดเข้ารหัส AEAD (Authenticated Encryption with Associated Data) เช่น GCM (โหมด Galois/Counter) หรือ CCM (Counter with CBC-MAC) มันเก็บแท็กการรับรองความถูกต้องที่สร้างขึ้นระหว่างการเข้ารหัส
  • ของคุณ: ข้อมูลรับรองความถูกต้องเพิ่มเติมที่สามารถใช้สำหรับโหมดเข้ารหัส AEAD
  • $tag_length: ความยาวของแท็กการรับรองความถูกต้อง สำหรับโหมด GCM ความยาวแท็กมีตั้งแต่ 4 ถึง 16 ไบต์

ตัวอย่างเช่น:


$simple_string = 'ยินดีต้อนรับสู่ Linuxhint \n ' ;
เสียงสะท้อน 'สตริงต้นฉบับ: ' . $simple_string ;
$เข้ารหัส = 'เออีเอส-128-ซีทีอาร์' ;
$iv_length = opensl_cipher_iv_length ( $เข้ารหัส ) ;
ตัวเลือก $ = 0 ;
$encryption_iv = '1234567891011121' ;
$encryption_key = 'ลีนุกซ์' ;
การเข้ารหัส $ = opensl_encrypt ( $simple_string , $เข้ารหัส ,
$encryption_key , ตัวเลือก $ , $encryption_iv ) ;
เสียงสะท้อน 'สตริงที่เข้ารหัส: ' . การเข้ารหัส $ . ' \n ' ;
?>

รหัสประกาศข้อความพื้นฐานก่อน “ยินดีต้อนรับสู่ลินุกซ์ชินท์” และใช้คำสั่ง echo เพื่อแสดง จากนั้นจะระบุอัลกอริทึมการเข้ารหัสที่จะใช้ AES-128-CTR . นอกจากนี้ยังใช้ opensl_cipher_iv_length() ฟังก์ชันคำนวณขนาดของ เวกเตอร์การเริ่มต้น (IV) จำเป็นสำหรับรหัสนี้



รหัสตั้งค่าการเข้ารหัส iv มูลค่าถึง ‘1234567891011121’ และคีย์การเข้ารหัสเพื่อ 'ลีนุกซ์' . สตริงที่เข้ารหัสจะแสดงโดยใช้คำสั่ง echo เมื่อการเข้ารหัสเสร็จสิ้นโดยใช้ opensl_encrypt() การทำงาน. เนื่องจากเวกเตอร์การเริ่มต้นแบบสุ่มที่ใช้สำหรับการเข้ารหัส สตริงที่เข้ารหัสสุดท้ายจะแตกต่างกันไปทุกครั้ง

ถอดรหัสสตริงโดยใช้ฟังก์ชัน opensl_decrypt()

ในการถอดรหัสสตริงใน PHP คุณสามารถใช้ opensl_decrypt() การทำงาน. ฟังก์ชันนี้ใช้ข้อมูลที่เข้ารหัส วิธีการเข้ารหัส และคีย์เป็นอินพุตและส่งกลับข้อความธรรมดาที่ถอดรหัสแล้ว

ไวยากรณ์สำหรับ opensl_decrypt() วิธีการคือ:

สตริง opensl_decrypt ( สตริง ข้อมูล $ , สตริง วิธีการ $ , สตริง $key , นานาชาติ ตัวเลือก $ = 0 , สตริง $iv , สตริง $แท็ก , สตริง $ คุณ )

อาร์กิวเมนต์ที่ส่งไปยังฟังก์ชันคือ:

  • ข้อมูล $: สตริงหรือข้อมูลที่เข้ารหัสที่คุณต้องการถอดรหัส
  • วิธีการ $: วิธีการเข้ารหัสหรือการเข้ารหัสที่ใช้ระหว่างการเข้ารหัส คุณสามารถรับรายการวิธีการเข้ารหัสที่รองรับได้โดยใช้ opensl_get_cipher_methods()
  • $คีย์: คีย์เข้ารหัสที่ใช้ในการเข้ารหัสข้อมูล ควรตรงกับคีย์ที่ใช้ระหว่างการเข้ารหัส
  • ตัวเลือก $: พารามิเตอร์ทางเลือกที่สามารถรวมค่าสถานะเพิ่มเติมสำหรับตัวเลือกการถอดรหัสเฉพาะ คุณสามารถรวมค่าสถานะโดยใช้ตัวดำเนินการระดับบิตหรือ (|) รวมค่าสถานะทั่วไป OPENSSL_RAW_DATA และ OPENSSL_ZERO_PADDING .
  • $iv: เดอะ เวกเตอร์การเริ่มต้น (IV) ใช้ระหว่างการเข้ารหัส ควรเป็น IV เดียวกับที่ใช้ระหว่างการเข้ารหัสและส่งผ่านเป็นสตริง
  • $แท็ก: แท็กการตรวจสอบความถูกต้องสำหรับโหมดเข้ารหัส AEAD (Authenticated Encryption with Associated Data) เช่น GCM (โหมด Galois/Counter) หรือ CCM (Counter with CBC-MAC) หากการรับรองความถูกต้องล้มเหลว opensl_decrypt() จะคืนค่าเป็น FALSE
  • ของคุณ: ข้อมูลรับรองความถูกต้องเพิ่มเติมที่ใช้ระหว่างการเข้ารหัสสำหรับโหมดเข้ารหัส AEAD

มูลค่าส่งคืน: หากสำเร็จ จะส่งคืนสตริงที่ถอดรหัสแล้ว มิฉะนั้นจะส่งกลับ FALSE

ตัวอย่างเช่น:


$encrypted_string = 'rKaeYsYaNjkVbRPmJizrdX0xutLE' ;
เสียงสะท้อน 'สตริงที่เข้ารหัส: ' . $encrypted_string . ' \n ' ;
$decryption_iv = '1234567891011121' ;
$เข้ารหัส = 'เออีเอส-128-ซีทีอาร์' ;
ตัวเลือก $ = 0 ;
$decryption_key = 'ลีนุกซ์' ;
$ถอดรหัส = opensl_decrypt ( $encrypted_string , $เข้ารหัส ,
$decryption_key , ตัวเลือก $ , $decryption_iv ) ;
เสียงสะท้อน 'ถอดรหัสสตริง: ' . $ถอดรหัส ;
?>

ความยาวเวกเตอร์ในรหัสนี้คำนวณโดยใช้ opensl_cipher_iv_length() ฟังก์ชัน และพารามิเตอร์การเข้ารหัส iv และคีย์เดียวกันจะถูกใช้ในระหว่างการเข้ารหัส อัลกอริทึมการเข้ารหัสถูกกำหนดเป็น AES-128-CTR .

สตริงที่เข้ารหัสก่อนหน้านี้ถูกถอดรหัสโดยใช้อัลกอริทึมการเข้ารหัส คีย์เข้ารหัส การตั้งค่า และค่า IV โดย opensl_decrypt() การทำงาน. ข้อความที่ถอดรหัสผลลัพธ์จะแสดงโดยใช้คำสั่ง echo

บทสรุป

การสร้างเว็บไซต์มักจะเกี่ยวข้องกับ การเข้ารหัสและถอดรหัส ข้อมูล. เมื่อใช้การเข้ารหัสเพื่อปกป้องข้อมูลที่ละเอียดอ่อน คุณสามารถหลีกเลี่ยงการเปิดเผยผู้ใช้ของคุณจากการโจรกรรมข้อมูลประจำตัว การฉ้อโกง และภัยคุกคามความปลอดภัยอื่นๆ สตริงใน PHP สามารถเข้ารหัสและถอดรหัสได้โดยฟังก์ชัน opensl_encrypt() และ opensl_decrypt() ฟังก์ชั่น. ด้วยการใช้อัลกอริทึมและคีย์การเข้ารหัสอย่างระมัดระวัง คุณสามารถสร้างระบบที่แข็งแกร่งและปลอดภัยสำหรับการจัดการข้อมูลที่ละเอียดอ่อนในแอปพลิเคชัน PHP ของคุณ