24 สิงหาคม 2557

Published สิงหาคม 24, 2557 by with 1 comment

Hash ข้อความด้วย Python

สวัสดีครับทุกท่าน บทความนี้เราจะไป Hash (แฮช) ข้อความด้วย Python กันครับ
  Hash เป็นการนำข้อมูลต้นฉบับ มาผ่านกระบวนการทางคณิตศาสตร์ โดยค่า Hash ที่ได้นั้น เราไม่สามารถทำย้อนกลับไปเป็นต้นฉบับได้
  ถ้าข้อมูลต้นฉบับมีการเปลี่ยนแปลงเพียงเล็กนิดจะทำให้ค่า Hash ที่แตกต่างจากเดิมอย่างสิ้นเชิง
  ขนาดข้อมูลต้นฉบับมีจำนวนเท่าใดค่าของ Hash มีจำนวนบิตคงที่เสมอ และค่า Hash ต้องไม่มีการซ้ำกันหรือซ้ำกันน้อยมากครับ
ในการ Hash ข้อความด้วย Python เราต้องใช้โมดูลที่มีชื่อว่า hashlib ครับ สามารถ Hash ด้วย Algorithm(วิธีการคิด) ได้ดังนี้ครับ
  • md5
  • sha1
  • sha224
  • sha256
  • sha384
  • sha512 
  • OpenSSL Algorithms

Python Hash ข้อความด้วย MD5

โค้ดตัวอย่าง
import hashlib
hash = hashlib.md5(b"1111") #ข้อความที่จะแฮชคือ 1111
print(hash.hexdigest()) 

ผลลัพธ์
b59c67bf196a4758191e42f76670ceba

Python Hash ข้อความด้วย SHA1

โค้ดตัวอย่าง 
import hashlib
hash = hashlib.sha1(b"1111") #ข้อความที่จะแฮชคือ 1111
print(hash.hexdigest())

ผลลัพธ์
011c945f30ce2cbafc452f39840f025693339c42

Python Hash ข้อความด้วย SHA224

โค้ดตัวอย่าง 
import hashlib
hash = hashlib.sha224(b"1111") #ข้อความที่จะแฮชคือ 1111
print(hash.hexdigest())

ผลลัพธ์
9cb7b5b974b6df070cb60bbeb134ea461541b92187d54372f4b144de

Python Hash ข้อความด้วย SHA256

โค้ดตัวอย่าง
import hashlib
hash = hashlib.sha256(b"1111") #ข้อความที่จะแฮชคือ 1111
print(hash.hexdigest())

ผลลัพธ์
0ffe1abd1a08215353c233d6e009613e95eec4253832a761af28ff37ac5a150c

Python Hash ข้อความด้วย SHA384

โค้ดตัวอย่าง
import hashlib
hash = hashlib.sha384(b"1111") #ข้อความที่จะแฮชคือ 1111
print(hash.hexdigest())

ผลลัพธ์
7318735a5559d423f7706bbb8b6f10a610cb1b74b308a0e17849ace4bb3a34db34b3b126aa3a
8d73b117f98be0e4af67

Python Hash ข้อความด้วย OpenSSL Algorithms

เราสามารถ Hash ข้อความด้วย OpenSSL Algorithms วิธีการคิดแบบ OpenSSL ได้ครับ โดยมีตัวอย่างการเข้า  Hash ข้อความด้วย OpenSSL Algorithms ดังนี้ครับ
โค้ดตัวอย่าง
import hashlib

hash = hashlib.new('ripemd160') 
hash.update(b"1111")  #ข้อความที่จะแฮชคือ 1111
print(hash.hexdigest())

เข้า Hash ข้อความด้วย ripemd160 เป็นหนึ่งใน OpenSSL Algorithms ครับ ขึ้นอยู่กับว่าคอมพิวเตอร์ที่ใช้รองรับ Hash อะไรครับ นอกจากนั้นยังมี DSA และอื่น ๆ ครับ
ผลลัพธ์
3ae2b25dc4fcc262c399c0b6c8247a6c2a8be7f0

Python Hash ข้อความด้วย SHA3

ในการ Hash ข้อความด้วย SHA3 ตอนนี้ทาง Python 3 ยังไม่รองรับ SHA3 ครับ (ขณะที่ปรับปรุงบทความครั้งที่ 1) เราจึงต้องใช้โมดูลที่ชื่อว่า pysha3 ครับ
โค้ดตัวอย่าง
>>> import sys
>>> import hashlib
>>> if sys.version_info < (3, 4):
...    import sha3
>>> s = hashlib.new("sha3_512")
>>> s = hashlib.sha3_512() # alternative
>>> s.name
'sha3_512'
>>> s.digest_size
64
>>> s.update(b"data")
>>> s.hexdigest()
'1065aceeded3a5e4412e2187e919bffeadf815f5bd73d37fe00d384fe29f55f08462fdabe1007b993ce5b8119630e7db93101d9425d6e352e22ffe3dcb56b825'

ปรับปรุงครั้งที่ 1 วันที่ 12 กันยายน พ.ศ.2557 เวลา 22.41 น.
ติดตามบทความต่อนะครับ :)
ขอบคุณครับ

1 ความคิดเห็น:

  1. ปรับปรุงครั้งที่ 1 วันที่ 12 กันยายน พ.ศ.2557 เวลา 22.41 น.
    เพิ่ม Python Hash ข้อความด้วย SHA3

    ตอบลบ

แสดงความคิดเห็นได้ครับ :)