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

แฮชที่ปลอดภัยและการแยกย่อยข้อความโดยใช้ Python (hashlib)


มาตรฐานการประมวลผลข้อมูลของรัฐบาลกลาง (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 ไบต์