Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

แฮชที่ปลอดภัยและข้อความสรุปใน Python


สำหรับกระบวนการแฮชและการแยกข้อความที่ปลอดภัย เราควรใช้โมดูลแฮชลิบ โมดูลนี้ใช้อินเทอร์เฟซทั่วไปสำหรับอัลกอริธึมแฮชที่ปลอดภัยต่างๆ เช่น 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