สำหรับกระบวนการแฮชและการแยกข้อความที่ปลอดภัย เราควรใช้โมดูลแฮชลิบ โมดูลนี้ใช้อินเทอร์เฟซทั่วไปสำหรับอัลกอริธึมแฮชที่ปลอดภัยต่างๆ เช่น SHA1, SHA224, SHA256, SHA512 เป็นต้น รวมถึงอัลกอริธึม MD5 ของ RSA อัลกอริธึมที่เก่ากว่าเรียกว่า Message Digest และเมธอดใหม่เรียกว่า Secure Hash
ในการใช้โมดูลนี้ เราจำเป็นต้องนำเข้าโมดูล hashlib ในโค้ดหลาม
import hashlib
ในวิธีนี้ มีอัลกอริธึมที่กำหนดไว้ล่วงหน้าบางอย่าง เช่น md5, sha1, sha224, sha256, sha512 เราสามารถเพิ่มอัลกอริธึมเพิ่มเติมจากไลบรารี OpenSSL ได้
วิธีการบางอย่าง ค่าคงที่ของโมดูล hashlib มีดังนี้ -
ค่าคงที่ hashlib.algorithm_guranteed
มันจะส่งคืนชื่อของอัลกอริธึมแฮชที่รับประกันว่าโมดูลนี้รองรับสำหรับแพลตฟอร์มที่แตกต่างกันทั้งหมด
ค่าคงที่ hashlib.algorithm_available
มันจะส่งคืนชื่อของอัลกอริทึมแฮชซึ่งมีอยู่ในล่าม Python ที่ทำงานอยู่
ค่าคงที่ hashlib.digest_size
มันจะคืนค่าขนาดของแฮชที่ได้เป็นไบต์
ค่าคงที่ hashlib.block_size
มันจะคืนค่าขนาดบล็อกภายในของอัลกอริทึมแฮชเป็นไบต์
วิธีการ hashlib.new(ชื่อ[, data]))
มันเป็นตัวสร้าง ใช้ชื่ออัลกอริทึมที่ต้องการเป็นอาร์กิวเมนต์แรก สามารถใช้แฮชที่กำหนดไว้ล่วงหน้าหรืออัลกอริทึมอื่นๆ จากไลบรารี OpenSSL
วิธีการ hashlib.update(arg)
วิธีนี้ใช้เพื่ออัปเดตวัตถุแฮชด้วยอาร์กิวเมนต์ที่กำหนด การเรียกใช้ฟังก์ชันนี้ซ้ำๆ จะเทียบเท่ากับการเรียกครั้งเดียวที่มีอาร์กิวเมนต์ที่ต่อกัน
วิธีการ hashlib.digest()
วิธีนี้ใช้เพื่อส่งคืนข้อมูลที่ย่อยซึ่งส่งผ่านวิธีการอัพเดต ขนาดของอ็อบเจ็กต์ไบต์เท่ากับไดเจสต์_size อาจมีไบต์ในช่วงทั้งหมดตั้งแต่ 0 ถึง 255
วิธีการ hashlib.hexdigest()
วิธีนี้เหมือนกับวิธีไดเจสต์ แต่ผลลัพธ์จะมีเฉพาะค่าเลขฐานสิบหกเท่านั้น วิธีนี้ใช้ส่งข้อมูลผ่านอินเทอร์เน็ตได้ง่ายมาก
โค้ดตัวอย่าง
import hashlib my_hash1 = hashlib.md5() #Choose md5 and update with a bytes update_bytes = b'Python123' my_hash1.update(update_bytes) print("Result after digesting: " + str(my_hash1.hexdigest())) print("Digest Size: " + str(my_hash1.digest_size)) my_hash2 = hashlib.sha256() #Choose SHA256 and update with same bytes my_hash2.update(update_bytes) print("Result after digesting: " + str(my_hash2.hexdigest())) print("Digest Size: " + str(my_hash2.digest_size))
ผลลัพธ์
Result after digesting: ae35eacb1cb6f6d38c29a04ecb2d7471 Digest Size: 16 Result after digesting: bba32ba33d6a7f3e02a96e2d7ee6860765780aee42b878007369e373ff419b1e Digest Size: 32