Visual Basic ile Hash Algoritması Formu Oluşturmak

Ferhat Sercan
Yetkin Yayın
Published in
4 min readJan 18, 2024

Bugün sizlere Visual Basic’te şifrelemelerde kullanılan Hash Algoritmasını nasıl oluşturacağınızı anlatacağım.

Not: Yazıda sırasıyla açıklanan kodlar programdaki kod sırası baz alınarak yazılmıştır. Rastgele bir sıralama yoktur. Bütün kodlar yazının okunma sırasına göre yazılmalıdır.

İlk önce bir yeni bir poje oluştur diyerek Visual Basic seçelim ve ardından Windows Forms App (.NET Framework) seçerek projemizi oluşturalım.

Modül Oluşturma

Formumuzu oluşturduktan sonra proje ismimizin üstüne sağ tık-new item diyerek bir modül oluşturalım. Ben ilk önce modül oluşturmayı tercih ediyorum. Modülü oluşturduktan sonra bu modüle 2 tane sınıf import edeceğiz. Bunlardan ilki “System.Security.Cryptography”. Bu isim alanı içinde yer alan HashAlgorithm sınıfı, hash işlemleri için temel bir soyut sınıftır. İkinci olarak ise “System.Text” Bu isim alanı ise içinde yer alan Encoding sınıfı, karakterlerin baytlara dönüştürülmesi ve baytların karakterlere dönüştürülmesi işlemlerini gerçekleştirmek için kullanılır. Örneğin, UTF8 kodlamasını kullanarak bir dizeyi baytlara dönüştürebilir veya baytlardan bir dizini okuyarak bir dize elde edebilirsiniz.

Modüle ilgili sınıfları import ettiğimize göre kod yazmaya başlayabiliriz.

İlk olarak Public bir fonksiyon yazacak ve modül kodlarımızın çoğunu bunun içine yazacağız.

Public Function hashKoduUret(metin As String, algoritma as HashAlgorithm) As String

End Function

Fonksiyonumuzun başı ve sonu bu şekilde olacak. Biz şu an “hashKoduUret” isminde bir fonksiyon ismi tanımladık ve ardından “metin” isminde string değişken ve “algoritma” isminde kullanılacak hash algoritmasının ismini atadık.

Dim diziMetin() As Byte = Encoding.UTF8.GetBytes(metin)

Bu kod satırında ise “metin” isimli string değişkeni UTF8 karakter kodlamasını kullanarak bir byte dizisine dönüştürdük (GetBytes) ve dönüştürdüğümüz bu diziyi “diziMetin()” isimli değişkene atadık.

Dim byteSonuc() As Byte = Algoritma.ComputeHash(diziMetin)

Bu kod satırında ise “diziMetin” isimli diziyi “ComputeHash” metodunu kullanarak Hash Algoritmasına göre şifreledik ve bunu da “byteSonuc()” isimli diziye atadık. Buradaki “Algoritma” kelimesi ise bir hash algoritması nesnesini temsil ediyor.

Dim Sonuc As String = Nothing

Burada “Sonuc” isimli string değişkene şimdilik “Nothing” değerini atadık. İlerde bunu kullanacağız.

For Each Eleman As Byte In ByteSonuc
Sonuc &= Eleman.ToString("x2")
Next

Bu döngü, ByteSonuc adlı bir Byte dizisindeki her bir öğeyi alarak, bu öğeleri hexadecimal (onaltılık) formata çevirip “Sonuc” adlı string değişkenine ekler. Bu işlem, genellikle hash değerini okunabilir bir formata dönüştürmek için kullanılır.

Return Sonuc

Tüm bu işlemlerin ardından ise “Sonuc” değişkenini çağırıldığı yere göndermek için return metodunu kullanıyoruz.

Evet, modüle yazacağımız kodlar bu kadardı. Şimdi ana formumuza geçelim.

Ana Form İşlemleri

Öncelikle formu tasarlamak ve ilgili nesnelere isimlendirmeler yapmak önemli. Ben şimdi sizinle kendi yaptığım form tasarımımı paylaşıyorum.

Ben tasarımda isimlendirmeleri şu şekilde yaptım: Metin TextBox’ı için “tbMetin”, Hash Algoritması seçimi yapmak için oluşturulan ComboBox için “cmbHash”, Hash Kodu oluşturulduktan sonra aktarılacağı alan için oluşturulan TextBox’a ise “tbHash”. Eğer isimlendirmeleri kolay ve anlaşılır yaparsanız kod yazarken çok daha rahat edersiniz.

Şimdi ComboBox’a tıklayın ve nesnenin sağ üstünde çıkan oka basın. Ardında “Edıt Items” diyerek ComboBox’ın içerisine seçenekleri girin. Bu projede kullanacağımız tüm seçenekler (Lütfen sırasıyla ve her satırda tek seçenek olacak şekilde girin): Bir algoritma seçiniz, MD5, SHA1, SHA256, SHA384, SHA512.

Seçenek işlemini yaptıktan sonra ComboBox’a tekrar tıklayın (focus hale getirin yani) ardından Properties penceresinde nesnenin Olaylar sekmesine gelerek “DropDownClosed” seçeneğini bulun. Sonra seçeneğin yanındaki boşluğa çift tıklayarak nesnenin olayını oluşturun. Bunu yaptıktan sonra forma gelin ve formun üst kısmına çift tıklayarak formun load olayını oluşturun. Load olayına tek satırlık bir kod girip devam edeceğiz.

    Private Sub HashDeneme_Load(sender As Object, e As EventArgs) Handles MyBase.Load
cmbHash.SelectedIndex = 0
End Sub

Formun load olayına girilen bu kodda form ilk oluştuğu anda ComboBox’ın 0. indexteki değeri (Bir algoritma seçiniz) gösterilsin dedik.

Şimdi bundan sonra yazacağımız tüm kodlar ComboBox’ın yukarıda oluşturduğumuz DropDownClosed olay kodunun içerisine yazılacak. Başlayalım.

Dim Metin As String = tbMetin.Text

İlk önce “tbMetin”’deki değerin text’ini “Metin” isimli string değişkene atadık.

Dim Kod As String = ""

Burada ise “Kod” isimli string değişkene başta null (boşluk) değerini atadık.

Select Case cmbHash.SelectedItem.ToString.Trim
Case "MD5"
Kod = hashAlgoritmasiUret(Metin, MD5.Create)
Case "SHA1"
Kod = hashAlgoritmasiUret(Metin, SHA1.Create)
Case "SHA256"
Kod = hashAlgoritmasiUret(Metin, SHA256.Create)
Case "MD384"
Kod = hashAlgoritmasiUret(Metin, SHA384.Create)
Case "SHA512"
Kod = hashAlgoritmasiUret(Metin, SHA512.Create)

Burada ise “cmbHash” isimli ComboBox’tan seçilen değeri ilk önce string’e çevirdik (ToString) ardından Trim fonksiyonu ile başındaki ve sonundaki boşluklardan arındırdık. Daha sonra elimizde kalan salt değer hangi case’e eşit oluyorsa o case’e girmesini ve o case’in içerisindeki kodları çalıştırmasını söyledik.

Örnek vermek gerekirse eğer kullanıcı ComboBox’tan MD5 seçeneğini seçerse hashAlgoritmasiUret isimli fonksiyon çağırılacak (hatırlarsanız en başta modülde oluşturduğumuz fonksiyon) ve bu fonksiyon “Metin” isimli string değişkende bulunan değeri MD5.Create fonksiyonuyla MD5 ile şifreleyerek Kod isimli değişkene aktaracak. Diğer case’lerde de aynı mantık olduğu için diğerlerini anlatmıyorum.

tbHash = Kod
cmmHash.SelectedIndex = 0

Burada ise “tbHash” isimli TextBox’a “Kod” isimli değişkende bulunan değeri aktardık. Ardından ComboBox’ı eski haline getirdik.

Şimdi formu çalıştırabiliriz. Metin kısmına bir metin girin, ardından ComboBox’tan bir seçenek seçin ve karşınıza girdiğiniz metnin hash algoritmasıyla şifrelenmiş hali gelsin.

Son

Umarım bu makale sizler için faydalı olmuştur. Beni sosyal medya üzerinden takip etmek ve benimle iletişime geçmek için bana Instagram ve Linkedin üzerinden ulaşabilirsiniz.

--

--

Ferhat Sercan
Yetkin Yayın

Bildiklerimi, yaşadıklarımı ve öğrendiklerimi paylaşıyorum. Hepsi bu. Neverfap Akademi Ex-Team Lead YetGen23'2 https://bento.me/ferhatsercan