มาตรฐานการประมวลผลข้อมูลของรัฐบาลกลาง (FIPS) กำหนดอัลกอริทึมแฮชที่ปลอดภัย SHA1, SHA224, SHA256, SHA384 และ SHA512 RSA คำย่อที่สร้างจากชื่อย่อของนามสกุลของ Rivest, Shamir และ Adleman กำหนดอัลกอริทึม MD5 อัลกอริธึมที่เก่ากว่าเรียกว่าการสรุปข้อความ คำสมัยใหม่คือแฮชที่ปลอดภัย
โมดูล hashlib ใช้เพื่อติดตั้งอัลกอริธึมต่อไปนี้
- md5
- sha1
- sha224
- sha256
- sha384
- sha512
hashlib.new(ชื่อ[, data])
คือคอนสตรัคเตอร์ทั่วไปที่ใช้ชื่อสตริงของอัลกอริทึมที่ต้องการเป็นพารามิเตอร์แรก นอกจากนี้ยังมีอยู่เพื่ออนุญาตให้เข้าถึงแฮชที่ระบุไว้ข้างต้น เช่นเดียวกับอัลกอริธึมอื่นๆ ที่ไลบรารี OpenSSL ของคุณอาจมีให้ ตัวสร้างที่มีชื่อนั้นเร็วกว่า new() มากและควรเป็นที่ต้องการ
>>> hash = hashlib.new('md5',b'hello') >>> hash.hexdigest() '5d41402abc4b2a76b9719d911017c592' >>> import hashlib
การใช้คอนสตรัคเตอร์ที่มีชื่อเป็นรายบุคคล
>>> msg = hashlib.sha256() >>> msg.update(b'Simple is better than complex') >>> msg.digest() b'\xabz\xd8C(n\xb3\x8b\xf6\x0c\x0e\xf2\x81z\xd7\xf93\x835\xb2\xa1\x9cM\xb1S\x1f\xf7\xf9\x1av-F' >>> msg.block_size 64 >>> msg.hexdigest() 'ab7ad843286eb38bf60c0ef2817ad7f9338335b2a19c4db1531ff7f91a762d46' >>> msg = hashlib.md5() >>> msg.update(b'Simple is better than complex') >>> msg.hexdigest() 'fd34bb8fafd17f1a21d7bb6e38c8dc68'
วัตถุแฮชมีวิธีการดังต่อไปนี้ -
อัปเดต () | อัปเดตวัตถุแฮชด้วยวัตถุคล้ายไบต์ m.update(a); m.update(b) เทียบเท่ากับ m.update(a+b) |
ไดเจสต์() | ส่งคืนไดเจสต์ของข้อมูลที่ส่งผ่านไปยังเมธอด update() จนถึงตอนนี้ |
hexdigest() | ไดเจสต์ถูกส่งกลับเป็นออบเจ็กต์สตริงที่มีความยาวสองเท่า มีเพียงเลขฐานสิบหกเท่านั้น |
คัดลอก() | ส่งคืนสำเนาของวัตถุแฮช สามารถใช้เพื่อคำนวณไดเจสต์ของข้อมูลที่แชร์สตริงย่อยเริ่มต้นทั่วไป |
Hashlib มีคุณสมบัติดังต่อไปนี้ -
algorithms_guaranteed | ชุดที่มีชื่อของอัลกอริธึมการแฮชรับประกันว่าโมดูลนี้รองรับในทุกแพลตฟอร์ม |
อัลกอริธึม_พร้อมใช้ | ชุดที่มีชื่อของอัลกอริทึมการแฮชที่มีอยู่ในล่าม Python ที่ทำงานอยู่ |
ไดเจสต์_ขนาด | ขนาดของแฮชที่ได้เป็นไบต์ |
block_size | ขนาดบล็อกภายในของอัลกอริทึมแฮชในหน่วยไบต์ |
ชื่อ | ชื่อมาตรฐานของแฮชนี้ ตัวพิมพ์เล็กเสมอและเหมาะสมเสมอสำหรับใช้เป็นพารามิเตอร์ new() เพื่อสร้างแฮชประเภทนี้อีก |
อัลกอริทึม shake_128() และ shake_256() ให้ไดเจสต์ความยาวผันแปรด้วย length_in_bits//2 ความปลอดภัยสูงสุด 128 หรือ 256 บิต
BLAKE2 เป็นฟังก์ชันแฮชเข้ารหัสที่กำหนดไว้ใน RFC 7693 ซึ่งมีสองรสชาติ -
- BLAKE2b ปรับให้เหมาะสมสำหรับแพลตฟอร์ม 64 บิตและสร้างไดเจสต์ขนาดใดก็ได้ระหว่าง 1 ถึง 64 ไบต์
- BLAKE2s ได้รับการเพิ่มประสิทธิภาพสำหรับแพลตฟอร์ม 8 ถึง 32 บิต และสร้างไดเจสต์ขนาดใดก็ได้ตั้งแต่ 1 ถึง 32 ไบต์