16 Mayıs 2018 Çarşamba

SHA - 256 Kripto Algoritması

Mesajın uzunluğundan bağımsız olarak 256 bitlik (8*32 Bayt) sonuç üreten bir karıştırma algoritmasıdır.
Hazırlık aşamasında, hesaplamalara geçilmeden önce mesajın uzunluğu bir takım değerler ve sıfırlar ile 64 byta yani 512 bite genişletilir. Mesajın son değerinin yanına 0x80 ve son bölüme ise mesajın bit cinsinden uzunluğu eklenerek aradaki boşluk kalmış ise sıfırlar ile doldurulur. ABC şeklinde ASCII ile kodlanmış üç baytlık bir mesajımız olduğunu düşünelim. Mesajımız (8 bit x 3 Karakter) 24 bit uzunluğunda olacaktır.
Mesaj hash işlemine hazırdır. Hesaplama işlemi, her turda mesajın bir baytını hesaplamaya dahil edecek şekilde yapılır.
Hesaplamaya başlamak için  ilk sekiz asal sayının kare köklerinin kesirli bölümlerinden elde edilen sekiz adet değer kullanılır. Bu değerlere başlangıç değerleri denir. Her turda kullanılan değerler küçük harfler ile adlandırılırlar.


İlk turdan itibaren her seferinde gelecek tur için yeni a,b,c,d,e,f,g,h değerlerini hesaplanır. Bu iş için kullanılan fonksiyonlar ve tanımları aşağıdaki gibidir.





W değeri ilk onaltı tur için mesajın dört parçalar halindeki değeridir. Geri kalan 46 bayt için ise aşağıdaki formul kullanılır.


K değeri ise sabit bir değerler grubudur. Her bir turda sırasıyla kullanılır.


Örnek hesaplama tablosu "abc"için aşağıdaki gibidir.


Son turda elde edilen değerlerin her biri başlangıçta kullanılan başlangıç değerleri ile toplanarak sonuç elde edilir.

Hiç yorum yok:

Yorum Gönder