Altbilgi içeriğine atla
PYTHON YARDıM

hashlib Python (Nasıl Çalışir: Geliştiriciler İçin Bir Kılavuz)

Python dilindeki hashlib modülü, güvenli hash ve ileti özeti algoritmaları ile çalışmak için güçlü bir araçtır. Bu modül, birçok güvenli özet algoritmasına standart bir arayüz sağlar, bu da veri bütünlüğü ve güvenliğini sağlaması gereken geliştiriciler için çok yönlü bir seçim yapar. Makalenin ilerleyen kısımlarında, Iron Software tarafından geliştirilmiş çok yönlü bir PDF oluşturma kütüphanesi olan IronPDF ile tanışacak ve her iki kütüphane ile nasıl çalıştıklarını göstermek için bir script yazacağız.

hashlib modülü, Python'un standart kütüphanesinin bir parçasıdır, bu yüzden ayrı olarak yüklemeye gerek yoktur. Çeşitli kriptografik hash fonksiyonlarını içerir, örneğin MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 ve SHA-3 serisi. Bu fonksiyonlar, veri özetlerini oluşturmak için kullanılabilecek hash nesneleri oluşturmak için kullanılır.

Başlıca Özellikler

  1. Geniş Algoritma Yelpazesi: hashlib, MD5 ve SHA-1 gibi eski algoritmaların yanı sıra SHA-256 ve SHA-3 gibi daha modern algoritmalar dahil olmak üzere birden fazla hash algoritmasını destekler.
  2. Basit Arayüz: Her bir hash algoritmasının, bir hash nesnesi döndüren yapıcı bir metodu vardır. Bu nesne, güncelleme yöntemi kullanılarak veri ile beslenebilir ve sindirim veya hexadecimal sindirim yöntemleri kullanılarak karma değer üretebilir.
  3. Güvenlik: MD5 ve SHA-1 gibi bazı algoritmalar bilinen güvenlik açıklarına sahip olsa da, hashlib daha güvenli seçenekler içeren SHA-256 ve SHA-3 gibi algoritmaları içerir.

Kurulum

hashlib yerleşik bir modüldür ve özel bir kurulum gerektirmez.

Temel Kullanım

İşte hashlib hash oluşturucusunu kullanarak bir SHA-256 hash'i oluşturmak için hashlib kullanımına dair basit bir örnek:

import hashlib

# Creating hash objects with SHA-256
hash_object = hashlib.sha256()
# Update the hash object with data
hash_object.update(b'IronPDF from Iron Software is Awesome')
# Get the hexadecimal representation of the hash
hash_hex = hash_object.hexdigest()  # hash_hex is the hexadecimal digest
print(hash_hex)  # Output the hash
# Output: 6fc0c7d6af8eb51f0cd89281db55c6a6b76b5310226fa5af2272a8eb42cc1bfe
import hashlib

# Creating hash objects with SHA-256
hash_object = hashlib.sha256()
# Update the hash object with data
hash_object.update(b'IronPDF from Iron Software is Awesome')
# Get the hexadecimal representation of the hash
hash_hex = hash_object.hexdigest()  # hash_hex is the hexadecimal digest
print(hash_hex)  # Output the hash
# Output: 6fc0c7d6af8eb51f0cd89281db55c6a6b76b5310226fa5af2272a8eb42cc1bfe
PYTHON

Gelişmiş Özellikler

Çoklu İş Parçacığı Desteği: Kriptografik özet fonksiyonu ile, hashlib, bir seferde 2047 bayttan fazla veri sağlandığında bir özeti hesaplayarak Global Interpreter Lock'u (GIL) serbest bırakır ve bu da çoklu iş parçacıklı uygulamalarda daha iyi performans sağlar. Özel Hash Algoritmaları: Python dağıtımınızın hashlib modülü, ek algoritmalar sağlayan bir OpenSSL derlemesine karşılık geliyorsa, bu algoritmalara new() yöntemi ile erişebilirsiniz.

HashLib modülü kullanarak çeşitli karma türleri

1. Basit Hashleme

import hashlib

# Simple hashing example
data = b'Hello, World!'
hash_object = hashlib.sha256(data)
hex_dig = hash_object.hexdigest()
print("SHA-256 Hash:", hex_dig)
# Output: SHA-256 Hash: dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
import hashlib

# Simple hashing example
data = b'Hello, World!'
hash_object = hashlib.sha256(data)
hex_dig = hash_object.hexdigest()
print("SHA-256 Hash:", hex_dig)
# Output: SHA-256 Hash: dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
PYTHON

Kod, giriş verileri için bir SHA-256 özet değer oluşturur.

2. Farklı Özet Boyutlarını Kullanma

import hashlib

# Hashing with different digest sizes
data = b'Hello, World!'

# MD5, SHA-256, and SHA-512 hash generation
hash_md5 = hashlib.md5(data).hexdigest()
hash_sha256 = hashlib.sha256(data).hexdigest()
hash_sha512 = hashlib.sha512(data).hexdigest()

# Print each hash
print("MD5 Hash (hex):", hash_md5)
print("SHA-256 Hash (hex):", hash_sha256)
print("SHA-512 Hash (hex):", hash_sha512)
# Output:
# MD5 Hash (hex): 65a8e27d8879283831b664bd8b7f0ad4
# SHA-256 Hash (hex): dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
# SHA-512 Hash (hex): 374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387
import hashlib

# Hashing with different digest sizes
data = b'Hello, World!'

# MD5, SHA-256, and SHA-512 hash generation
hash_md5 = hashlib.md5(data).hexdigest()
hash_sha256 = hashlib.sha256(data).hexdigest()
hash_sha512 = hashlib.sha512(data).hexdigest()

# Print each hash
print("MD5 Hash (hex):", hash_md5)
print("SHA-256 Hash (hex):", hash_sha256)
print("SHA-512 Hash (hex):", hash_sha512)
# Output:
# MD5 Hash (hex): 65a8e27d8879283831b664bd8b7f0ad4
# SHA-256 Hash (hex): dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
# SHA-512 Hash (hex): 374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387
PYTHON

Kod, sağlanan verileri kullanarak MD5, SHA-256 ve SHA-512 için hashler oluşturur.

3. Anahtarlı Karma

import hashlib
from hashlib import blake2b

# Keyed hashing example
h = blake2b(key=b'pseudorandom key', digest_size=16)
h.update(b'message data')
print(h.hexdigest())
# Output: 3d363ff7401e02026f4a4687d4863ced
import hashlib
from hashlib import blake2b

# Keyed hashing example
h = blake2b(key=b'pseudorandom key', digest_size=16)
h.update(b'message data')
print(h.hexdigest())
# Output: 3d363ff7401e02026f4a4687d4863ced
PYTHON

Bu kod, Blake2b algoritmasını kullanarak anahtar tabanlı bir hash oluşturmayı göstermektedir.

4. Rastgeleleştirilmiş Hashleme

import hashlib
import os

# Randomized hashing example using PBKDF2-HMAC
data = b'Hello, World!'
salt = os.urandom(16)  # Generate a random salt
hash_object = hashlib.pbkdf2_hmac('sha256', data, salt, 100000)
hex_dig = hash_object.hex()
print("Randomized Hash (SHA-256):", hex_dig)
# Output: Randomized Hash (SHA-256): a2a3c1a30a2add1867d55eac97fd9c84dc679691c0f15ae09c01e1bcc63ba47a
import hashlib
import os

# Randomized hashing example using PBKDF2-HMAC
data = b'Hello, World!'
salt = os.urandom(16)  # Generate a random salt
hash_object = hashlib.pbkdf2_hmac('sha256', data, salt, 100000)
hex_dig = hash_object.hex()
print("Randomized Hash (SHA-256):", hex_dig)
# Output: Randomized Hash (SHA-256): a2a3c1a30a2add1867d55eac97fd9c84dc679691c0f15ae09c01e1bcc63ba47a
PYTHON

Bu örnekler, farklı özet boyutları kullanarak temel karma işlemlerini kapsar. Özellikle gereksinimlere veya tercihlere göre, farklı algoritmalar veya parametreler kullanılarak ayarlamalar yapılabilir.

Pratik Uygulamalar

  1. Veri Bütünlüğü: Kayıtların bütünlüğünü doğrulamak için genellikle hash fonksiyonları kullanılır. Orijinal verinin karmasını alınan verinin karması ile karşılaştırarak, verinin değiştirilmediğinden emin olabilirsiniz.
  2. Şifre Depolama: Şifreleri güvenli bir şekilde depolamak için genellikle hash fonksiyonları kullanılır. Sistem, gerçek şifre yerine şifrenin hash'ini depolar. Bir kullanıcı giriş yaptığında, girilen şifrenin karması saklanan karma ile karşılaştırılır.
  3. Dijital İmzalar: Hash fonksiyonları, bir mesajın özgünlüğünü ve bütünlüğünü doğrulayan dijital imzalar oluşturmak için yaygın olarak kullanılır.

IronPDF Tanıtımı

hashlib Python ((Nasıl Çalışır: Geliştiriciler İçin Bir Kılavuz)): Şekil 1 - Python için IronPDF: Python PDF Kütüphanesi

IronPDF, HTML, CSS, görüntüler ve JavaScript kullanarak PDF'ler oluşturmak, düzenlemek ve imzalamak için güçlü bir Python kütüphanesidir. Bu, minimal bellek kullanımıyla yüksek performans yetenekleri sağlar. Kullanıcılar, HTML'den PDF üretebilir, PDF belgelerini birleştirebilir veya bölebilir, PDF'lerden metin ve görüntü çıkarabilir, filigran uygulayabilir, bir PDF'yi JPEG ve PNG gibi görüntü formatlarına rasterize edebilir, PDF dosyalarını şifreleyebilir ve daha fazlasını yapabilir. IronPDF, geniş bir yelpazede PDF işlemleri sağlar.

IronPDF'nin Ana Özellikleri

HTML'den PDF'ye Dönüşüm

Kullanıcılar HTML dosyalarını, HTML dizelerini ve URL'leri PDF'lere dönüştürebilir. Örneğin, bir web sayfasını PDF olarak işleyin ve IronPDF'den IronPDF'in Chrome PDF renderleyicisini kullanın.

Çapraz Platform Desteği

IronPDF, Python 3+ sürümleri için tasarlanmıştır ve Windows, Mac, Linux veya Bulut Platformlarında çalışır.

IronPDF is also available in .NET, Java, Python, and Node.js.

Düzenleme ve İmzalama

Kullanıcı, IronPDF kullanarak özellikler ayarlayabilir, şifreler ve izinlerle güvenlik ekleyebilir ve PDF'lere dijital imzalar uygulayabilir.

Sayfa Şablonları ve Ayarları

IronPDF, PDF belgelerini üst bilgiler, alt bilgiler, sayfa numaraları ve ayarlanabilir kenar boşlukları ile özelleştirmenize olanak tanır. Duyarlı düzenleri ve özel kağıt boyutlarını da destekler.

Standart Uyumluluğu

IronPDF paketi ayrıca PDF/A ve PDF/UA gibi PDF standartlarına da uyar. UTF-8 karakter kodlamasını destekler ve resimler, CSS ve yazı tipleri gibi varlıkları işler.

IronPDF ve HashLib modülünü kullanarak PDF Belgeleri Oluşturun

IronPDF Ön Koşulları

  1. IronPDF altyapı teknolojisi olarak .NET 6.0'ı kullanır. Bu nedenle, .NET 6.0 runtime'ın sisteminize kurulu olduğundan emin olun.
  2. Python 3.0+: Python sürüm 3 veya daha yenisinin yüklü olması gerekmektedir.
  3. Pip: IronPDF paketini yüklemek için Python paket yükleyicisi pip'i yükleyin.

Başlamak için, betiklerimizi ekleyeceğimiz bir Python dosyası oluşturalım. Bu örnek için Visual Studio Code kod düzenleyicisini kullanıyoruz.

Visual Studio Code'u açın ve hashlibDemo.py adlı bir dosya oluşturun.

IronPDF kütüphanesini yükleyin:

pip install ironpdf

Ardından, IronPDF ve Hashlib python paketlerinin kullanımını göstermek için aşağıdaki kodu ekleyin

import hashlib
import os
from hashlib import blake2b
from ironpdf import *

# Apply your license key
License.LicenseKey = "your key"

# Create a PDF from a HTML string using Python
content = "<h1>Awesome Iron PDF with hashlib</h1>"
content += "<p>Data for all the below examples = IronPDF from Iron Software is Awesome</p>"
content += "<h2> Simple hashing example</h2>"

# Simple hashing example
data = b'IronPDF from Iron Software is Awesome'
content += "<p>hashlib.sha256(data)</p>"
hash_object = hashlib.sha256(data)
hex_dig = hash_object.hexdigest()
print("SHA-256 Hash:", hex_dig)
content += "<p>SHA-256 Hash:"+str(hex_dig)+"</p>"

content += "<h2> Hashing with different digest sizes</h2>"
# Hashing with different digest sizes
hash_md5 = hashlib.md5(data).hexdigest()
content += "<p>hashlib.md5(data).hexdigest()</p>"
hash_sha256 = hashlib.sha256(data).hexdigest()
content += "<p>hashlib.sha256(data).hexdigest()</p>"
hash_sha512 = hashlib.sha512(data).hexdigest()
content += "<p>hashlib.sha512(data).hexdigest()</p>"

print("MD5 Hash (hex):", hash_md5)
print("SHA-256 Hash (hex):", hash_sha256)
print("SHA-512 Hash (hex):", hash_sha512)
content += "<p>MD5 Hash (hex):"+str(hash_md5)+"</p>"
content += "<p>SHA-256 Hash (hex):"+str(hash_sha256)+"</p>"
content += "<p>SHA-512 Hash (hex):"+str(hash_sha512)+"</p>"

# Keyed hashing example
content += "<h2> Keyed hashing example</h2>"
h = blake2b(key=b'pseudorandom key', digest_size=16)
content += "<p></p>"
h.update(data)
print(h.hexdigest())
content += "<p>Keyed Hash (hex):"+str(h.hexdigest())+"</p>"

# Randomized hashing example 
content += "<h2> Randomized hashing example </h2>"
salt = os.urandom(16)  # Generate a random salt
hash_object = hashlib.pbkdf2_hmac('sha256', data, salt, 100000)
content += "<p>hashlib.pbkdf2_hmac('sha256', data, salt, 100000)</p>"
hex_dig = hash_object.hex()
print("Randomized Hash (SHA-256):", hex_dig)
content += "<p>Randomized Hash (SHA-256):"+str(hex_dig)+"</p>"

# Generate PDF using IronPDF
renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlAsPdf(content)
# Export to a file or Stream
pdf.SaveAs("Demo-hashlib.pdf")
import hashlib
import os
from hashlib import blake2b
from ironpdf import *

# Apply your license key
License.LicenseKey = "your key"

# Create a PDF from a HTML string using Python
content = "<h1>Awesome Iron PDF with hashlib</h1>"
content += "<p>Data for all the below examples = IronPDF from Iron Software is Awesome</p>"
content += "<h2> Simple hashing example</h2>"

# Simple hashing example
data = b'IronPDF from Iron Software is Awesome'
content += "<p>hashlib.sha256(data)</p>"
hash_object = hashlib.sha256(data)
hex_dig = hash_object.hexdigest()
print("SHA-256 Hash:", hex_dig)
content += "<p>SHA-256 Hash:"+str(hex_dig)+"</p>"

content += "<h2> Hashing with different digest sizes</h2>"
# Hashing with different digest sizes
hash_md5 = hashlib.md5(data).hexdigest()
content += "<p>hashlib.md5(data).hexdigest()</p>"
hash_sha256 = hashlib.sha256(data).hexdigest()
content += "<p>hashlib.sha256(data).hexdigest()</p>"
hash_sha512 = hashlib.sha512(data).hexdigest()
content += "<p>hashlib.sha512(data).hexdigest()</p>"

print("MD5 Hash (hex):", hash_md5)
print("SHA-256 Hash (hex):", hash_sha256)
print("SHA-512 Hash (hex):", hash_sha512)
content += "<p>MD5 Hash (hex):"+str(hash_md5)+"</p>"
content += "<p>SHA-256 Hash (hex):"+str(hash_sha256)+"</p>"
content += "<p>SHA-512 Hash (hex):"+str(hash_sha512)+"</p>"

# Keyed hashing example
content += "<h2> Keyed hashing example</h2>"
h = blake2b(key=b'pseudorandom key', digest_size=16)
content += "<p></p>"
h.update(data)
print(h.hexdigest())
content += "<p>Keyed Hash (hex):"+str(h.hexdigest())+"</p>"

# Randomized hashing example 
content += "<h2> Randomized hashing example </h2>"
salt = os.urandom(16)  # Generate a random salt
hash_object = hashlib.pbkdf2_hmac('sha256', data, salt, 100000)
content += "<p>hashlib.pbkdf2_hmac('sha256', data, salt, 100000)</p>"
hex_dig = hash_object.hex()
print("Randomized Hash (SHA-256):", hex_dig)
content += "<p>Randomized Hash (SHA-256):"+str(hex_dig)+"</p>"

# Generate PDF using IronPDF
renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlAsPdf(content)
# Export to a file or Stream
pdf.SaveAs("Demo-hashlib.pdf")
PYTHON

Kod Açıklaması

Sağlanan kod, Python'un hashlib kütüphanesini kullanarak çeşitli şifreleme tekniklerinin kullanımını göstermektedir:

  1. Basit Şifreleme Örneği: Belirli bir veri dizesinin SHA-256 hash'ini hesaplar (b'IronPDF from Iron Software is Awesome').
  2. Farklı Özüt Boyutlarıyla Hashleme: Bu bölüm, MD5, SHA-256 ve SHA-512 algoritmalarını kullanarak aynı veri dizesi üzerinde hashleme işlemini gösterir.
  3. Anahtar Tabanlı Şifreleme Örneği: Bu örnek, belirli bir anahtar (b'pseudorandom key') ile blake2b hash fonksiyonunu kullanarak verilere anahtar tabanlı şifreleme uygular.
  4. Rastgele Hashleme Örneği: Rastgele oluşturulan bir tuz ile rastgele bir hash oluşturmak için PBKDF2-HMAC algoritmasını ve SHA-256'yı kullanır.
  5. PDF Oluşturma: Hashleme örneklerini gösterdikten sonra, kod IronPDF kullanarak hashleme örneklerini içeren HTML içeriğini gösteren bir PDF belgesi oluşturur.

Her örnek, standart hashing, anahtarlı hashing ve rastgele hashing teknikleri gibi kriptografik hashing'in farklı yönlerini göstermektedir.

Çıktı

hashlib Python ((Nasıl Çalışır: Geliştiriciler İçin Bir Kılavuz)): Şekil 2 - Örnek konsol çıktısı

PDF

hashlib Python ((Nasıl Çalışır: Geliştiriciler İçin Bir Kılavuz)): Şekil 3 - IronPDF kullanarak örnek PDF çıktısı

IronPDF Lisansı

hashlib Python ((Nasıl Çalışır: Geliştiriciler İçin Bir Kılavuz)): Şekil 4 - IronPDF lisans sayfası

IronPDF, Python lisans anahtarı ile çalışır. IronPDF for Python, kullanıcıların satın almadan önce geniş özelliklerini test edebilmeleri için bir ücretsiz deneme lisans anahtarı sunar.

IronPDF paketini kullanmadan önce Betiğin başına Lisans Anahtarını yerleştirin:

from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
PYTHON

Sonuç

Hashlib modülü, Python'un standart kütüphanesi için hayati öneme sahiptir ve çeşitli uygulamalar için güçlü ve güvenli hash fonksiyonları sağlar. İster veri bütünlüğünü sağlıyor, ister parolaları güvenli bir şekilde saklıyor, ister dijital imzalar oluşturuyor olun, hashlib gerekli araçları sunar. Öte yandan, IronPDF, güçlü bir PDF oluşturma ve PDF işleme kütüphanesidir. Bu iki kütüphane ile, geliştiriciler hızlı bir şekilde hash'ler oluşturup bunları PDF formatında saklayabilir.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara