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

การเข้ารหัสแฮช MD5 โดยใช้ Python?


หนึ่งในความกังวลหลักของบริษัทไอทีทั้งหมดในเรื่องความปลอดภัยของข้อมูลที่นั่น มีเทคนิคการแฮชที่หลากหลายสำหรับฉายภาพและตรวจสอบข้อมูลของเรา

แฮชคืออะไร

แฮชเป็นฟังก์ชันที่ใช้ลำดับความยาวผันแปรของไบต์เป็นอินพุตและแปลงเป็นลำดับความยาวคงที่ อย่างไรก็ตาม การรับข้อมูลดั้งเดิม (ไบต์อินพุต) กลับมานั้นไม่ใช่เรื่องง่าย ตัวอย่างเช่น x คือข้อมูลที่คุณป้อน และ f คือ f คือฟังก์ชันแฮช ดังนั้นการคำนวณ f(x) ทำได้ง่ายและรวดเร็ว แต่การพยายามรับ x อีกครั้งเป็นงานที่ใช้เวลานานมาก

ค่าที่ส่งคืนจากฟังก์ชันแฮชเรียกว่า hash, checksum, hash value หรือ message dissolved

เราสามารถสรุปได้ดังนี้ -

การเข้ารหัสแฮช MD5 โดยใช้ Python?

สมมติว่าคุณต้องการแปลงข้อความ "Hello World" เป็นฟังก์ชันแฮช md5 ผลลัพธ์ที่ได้คือ a,

การเข้ารหัสแฮช MD5 โดยใช้ Python?

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

ฟังก์ชันแฮชหรืออัลกอริธึมที่ใช้กันส่วนใหญ่สองอย่างคือ -

  • MD5 - MD5 หรืออัลกอริธึมการแยกข้อความจะสร้างค่าแฮช 128 บิต มีปัญหาด้านความปลอดภัยสองสามประการกับอัลกอริธึม md5 เราจึงใช้อัลกอริทึมนี้เพื่อตรวจสอบความสมบูรณ์ของข้อมูลเป็นหลัก

  • SHA - มีอัลกอริธึมหลายชุดภายใต้กลุ่ม SHA ของอัลกอริธึม ซึ่งพัฒนาโดยมาตรฐานการประมวลผลข้อมูลของรัฐบาลกลางสหรัฐ อัลกอริธึมเหล่านี้มีความปลอดภัยมากกว่า md5 มาก ดังนั้นจึงใช้กันอย่างแพร่หลายในหลาย ๆ ด้านรวมถึงแอปพลิเคชันการเข้ารหัส ข้อความที่สร้างโดยอัลกอริทึมเหล่านี้มีตั้งแต่ 160 บิตถึง 512 บิต

MD5

ไลบรารีมาตรฐาน Python มีโมดูลที่เรียกว่า hashlib ซึ่งมีอัลกอริธึมการแฮชยอดนิยมส่วนใหญ่ อัลกอริทึมส่วนใหญ่มีการใช้งานภายในโมดูล hashlib อย่างไรก็ตาม หากคุณติดตั้ง OpenSSL ไว้ สามารถใช้ hashlib เพื่อทำงานกับอัลกอริธึมเหล่านี้ได้เช่นกัน

ก่อนอื่น หากคุณต้องการใช้อัลกอริธึมการแฮช ให้นำเข้าโมดูล hashlib -

นำเข้า hashlib

ตอนนี้เพื่อตรวจสอบว่าอัลกอริธึมที่ต้องการหรืออัลกอริธึมทั้งหมดมีอยู่ในโมดูล hashlib หรือไม่ -

>>> พิมพ์ (hashlib.algorithms_available){'sha3_256', 'sha3_224', 'sha1', 'blake2b', 'sha512', 'dsaEncryption', 'dsaWithSHA', 'DSA', 'md5', ' sha384', 'sha224', 'sha3_384', 'ecdsa-with-SHA1', 'DSA-SHA', 'SHA1', 'md4', 'SHA256', 'MD4', 'sha3_512', 'วังวน', ' sha256', 'shake_256', 'SHA', 'RIPEMD160', 'shake_128', 'SHA512', 'ripemd160', 'SHA224', 'sha', 'blake2s', 'SHA384', 'MD5'}

รายการอัลกอริทึมด้านบนที่มีให้ใช้งานผ่านโมดูล hashlib รวมถึงอัลกอริทึมผ่าน OpenSSL

อย่างไรก็ตาม หากต้องการตรวจสอบรายการอัลกอริธึมที่พร้อมใช้งานตลอดเวลา เราตรวจสอบได้ผ่านอัลกอริทึม_guaranteed

<ก่อน>>>> พิมพ์ (hashlib.algorithms_guaranteed){'sha3_512', 'sha256', 'sha3_256', 'shake_256', 'sha3_224', 'sha1', 'blake2b', 'sha512', 'md5', ' shake_128', 'sha384', 'sha224', 'sha3_384', 'blake2s'}

มาสร้างโปรแกรมง่ายๆ โดยใช้อัลกอริธึม md5 กัน -

รหัส

นำเข้า hashlibhash_obj =hashlib.md5(b'Hello, Python!')print(hash_obj.hexdigest())

ผลลัพธ์

a0af7810eb5fcb84c730f851361de06a

โค้ดด้านบนใช้คำว่า “Hello, Python!” สตริงเป็นอินพุตและพิมพ์ HEX ไดเจสต์ของสตริงนั้น Hexdigest ส่งคืนสตริง HEX ที่แสดงถึงแฮช

อย่างไรก็ตาม หากคุณต้องการส่งกลับลำดับไบต์ คุณควรใช้ hash_obj.diget() เช่น −

นำเข้า hashlibhash_obj =hashlib.md5(b'Hello, Python!')#ในการสร้าง ลำดับของไบต์พิมพ์(hash_obj.digest())

ผลลัพธ์

b'\xa0\xafx\x10\xeb_\xcb\x84\xc70\xf8Q6\x1d\xe0j'

หากคุณสังเกตเห็น เราใช้ 'b' ก่อนตัวอักษรสตริงใดๆ นี่คือการสร้างไบต์จากสตริงเนื่องจากฟังก์ชัน hashing ยอมรับเฉพาะลำดับไบต์ที่เป็นพารามิเตอร์

ในกรณีที่คุณต้องการส่งสตริงจากคอนโซล อย่าลืมเข้ารหัสสตริงตามลำดับไบต์ -

นำเข้า hashlibmystring =input('Enter string to hash:')hash_obj =hashlib.md5(mystring.encode())print(hash_obj.hexdigest())

ผลลัพธ์

ป้อนสตริงเพื่อแฮช:สวัสดี TutorialsPoint9a5d3fad65690dcf44adaec67226abe7