Altbilgi içeriğine atla
PYTHON YARDıM

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

Python'da hashlib modulu, guvenli karmalar ve mesaj ozeti algoritmalari ile calismak icin guclu bir aracdir. Bu modul, veri butunlugunu ve guvenligini saglamalari gerektiginde, geliştiricilere çok yonlu bir seçenek sunarak bircok guvenli karma algoritmasi icin standart bir arayuz sunar. Makalenin ilerleyen bölümlerinde, IronSoftware tarafindan sunulan IronPDF adli çok yonlu bir PDF oluşturma kutuphanesi uzerinde duracak ve her iki kutuphanenin kullanimini göstermek icin bir script yazacagiz.

hashlib modulu, Python'un standart kutuphanesinin bir parcasi olup ayri bir kurulum gerektirmez. MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 ve SHA-3 serisi gibi çeşitli kriptografik karma fonksiyonlar icerir. Bu fonksiyonlar, daha sonra veri karmalari oluşturmak icin kullanilabilen karma nesneleri oluşturmak icin kullanilir.

Temel Özellikler

  1. Genis Algoritma Yelpazesi: hashlib, MD5 ve SHA-1 gibi eski olanlar ile SHA-256 ve SHA-3 gibi daha modern olanlar da dahil olmak üzere birden çok karma algoritmasini destekler.
  2. Basit Arayuz: Her bir karma algoritmasi bir karma nesnesi donduren bir constructor metoduna sahiptir. Bu nesne, update metodu kullanilarak veri ile beslenebilir ve digest veya hexdigest metodlari kullanilarak karm degeri oluşturulabilir.
  3. Guvenlik: MD5 ve SHA-1 gibi bazi algoritmalarin bilinen acikliklari olmasina ragmen, hashlib, SHA-256 ve SHA-3 gibi daha guvenli seçenekler icerir.

Kurulum

hashlib, gomulu bir modul olup acik bir kurulum gerektirmez.

Temel Kullanım

Iste, hashlib kullanarak hashlib karma constructor'i kullanarak bir SHA-256 karmasi oluşturmanin basit bir ornegi:

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

  • Coklu Is Parcalama Destegi: Kriptografik karma fonksiyonu ile, hashlib, ayni anda 2047 bayttan fazla veri tedarik edilirse bir karmayi hesaplarken Global Interpreter Lock (GIL)'i serbest birakir, ki bu coklu is parcasi uygulamalarinda daha iyi performans saglar.
  • Ozel Karma Algoritmalari: Eger Python dağıtiminizin hashlib'i ek algoritmalari saglayan bir OpenSSL derlemesine bagliysa, onlara new() metodu uzerinden erisebilirsiniz.

HashLib Modulu Kullanarak Çeşitli Karma Turlari

1. Basit Karma

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, giris verileri icin bir SHA-256 karmasi oluşturur.

2. Farkli Karm Buylklerini 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

Saglanan verilerle MD5, SHA-256 ve SHA-512 icin karmalar oluşturur.

3. Anahtarlamali Karmalama

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 algoritmasi kullanarak anahtarlamali bir karma oluşturulmasini göstermektedir.

4. Rastgele Karmalama

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, farkli karm boyutlari kullanarak temel karmalamayi kapsar. Farkli algoritmalar veya parametreler kullanmak gibi ozel gereksinimler veya tercihlerinize gore ayarlamalar yapilabilir.

Pratik Uygulamalar

  1. Veri Butunlugu: Karma fonksiyonlar genellikle kayitlarin butunlugunu doğrulamak icin kullanilir. Orijinal verinin karmasi ile alinan verinin karmasini karsilastirarak, verilerin değiştirilmediginden emin olabilirsiniz.
  2. Sifre Saklama: Karma fonksiyonlar genellikle sifreleri guvenli bir sekilde saklamak icin kullanilir. Sistem, sifrenin gerçek yerine karmasini saklar. Bir kullanıcı giris yaptiginda, girilen sifrenin karmasi kaydedilen karmayla karsilastirilir.
  3. Dijital Imzalar: Karma fonksiyonlar, bir mesajin gercekligini ve butunlugunu dogrulayan dijital imzalari oluşturmak icin yaygın olarak kullanilir.

IronPDF'i Tanıtma

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

IronPDF, HTML, CSS, resimler ve JavaScript kullanarak PDF oluşturma, düzenleme ve imzalama için güçlü bir Python kütüphanesidir. Az bellek kullanımı ile yüksek performanslı yetenekler sağlar. Kullanıcılar HTML'den PDF oluşturabilir, PDF belgelerini birleştirebilir veya bölebilir, PDF'lerden metin ve resim çıkarabilir, filigranlar uygulayabilir, JPEG ve PNG gibi resim formatlarına dönüştürebilir, PDF dosyalarını şifreleyebilir ve daha fazlasını yapabilir. IronPDF çeşitli PDF işlemleri sunmaktadır.

IronPDF'in Ana Özellikleri

HTML'den PDF'ye Dönüştürme

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

Platformlar Arası Destek

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

IronPDF ayrıca .NET, Java, Python ve Node.js için de mevcuttur.

Duzenleme ve Imzalama

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

Sayfa Şablonları ve Ayarlar

IronPDF, PDF belgelerini başlıklar, altlıklar, sayfa numaraları ve ayarlanabilir kenar boşlukları ile özelleştirmenize olanak tanır. Ayrıca duyarlı düzenler ve özel kağıt boyutları da desteklenmektedir.

Standartlara Uyum

IronPDF paketi, 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ü kullanarak PDF Belgeleri Üretin

IronPDF Gereksinimleri

  1. IronPDF alt teknoloji olarak .NET 6.0'ı kullanır. Bu nedenle, sisteminizde .NET 6.0 çalışma zamanı kurulu olduğundan emin olun.
  2. Python 3.0+: Python 3 veya daha sonraki bir sürümün kurulu olması gerekir.
  3. Pip: IronPDF paketini kurmak için Python paket yükleyicisi pip kurun.

Başlamak için, komut dosyalarımızı eklemek amacıyla bir Python dosyası oluşturalım. Bu örnek için Visual Studio Code editörünü kullanıyoruz.

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

IronPDF kütüphanesini kurun:

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ı

Verilen kod, Python'un hashlib kutuphanesini kullanarak çeşitli hashleme tekniklerinin kullanımını göstermektedir:

  1. Basit Hashleme Örneği: Belirli bir veri dizesinin SHA-256 hashini hesaplar (b'IronPDF from Iron Software is Awesome').
  2. Farklı Özet Boyutlarıyla Hashleme: Bu bölüm, aynı veri dizisi üzerinde MD5, SHA-256 ve SHA-512 algoritmalarını kullanarak hashleme işlemini gösterir.
  3. Anahtarlı Hashleme Örneği: Bu örnek, veriler üzerinde anahtarlı hashleme gerçekleştirmek için belirtilen bir anahtarla (b'pseudorandom key') blake2b hash fonksiyonunu kullanır.
  4. Rastgele Hashleme Örneği: Rastgele oluşturulmuş bir tuz ile rastgele bir hash oluşturmak için SHA-256 ile PBKDF2-HMAC algoritmasından yararlanır.
  5. PDF Oluşturma: Hashleme örneklerini gösterdikten sonra kod, IronPDF kullanarak HTML içeriğinde hashleme örneklerini içeren bir PDF belgesi oluşturur.

Her örnek, standart hashleme, anahtarlı hashleme ve rastgele hashleme teknikleri gibi kriptografik hashlemenin farklı yönlerini gösterir.

Çıktı

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

PDF

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

IronPDF Lisansı

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

IronPDF, Python lisans anahtarı ile çalışır. IronPDF for Python, kullanıcıların kapsamlı özelliklerini satın almadan önce test etmelerine olanak tanıyan ücretsiz bir deneme lisans anahtarı sunar.

Lisans Anahtarını, IronPDF paketi kullanmadan önce scriptin başına 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ü, çeşitli uygulamalar için güçlü ve güvenli hash fonksiyonları sağlayan Python'un standart kütüphanesinin vazgeçilmez bir parçasıdır. Veri bütünlüğünü sağlamak, parolaları güvenle saklamak veya dijital imzalar oluşturmak gibi işlemlerde, hashlib gerekli araçları sunar. Öte yandan, IronPDF, güçlü bir PDF oluşturma ve PDF manipülasyon kütüphanesidir. Bu iki kütüphane ile geliştiriciler hızlı bir şekilde hash oluşturabilir ve bunları PDF formatında depolayabilir.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku

Iron Destek Ekibi

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