CodeBlanks Logo Icon CodeBlanks

SHA-256

  • C kursu
  • İleri seviye
  • Ders 56/83
  • 5 dk

SHA-256 ile hashing öğrenirsin.

SHA-256 nedir?

SHA-256, 32 baytlık özet üreten standart bir kriptografik hash fonksiyonudur. OpenSSL'in EVP arayüzü ile kullanılır. EVP_MD_CTX *ctx = EVP_MD_CTX_new(); ile bağlam oluşturursun.

Akış: EVP_DigestInit_ex(ctx, EVP_sha256(), NULL) ile başlat, EVP_DigestUpdate(ctx, data, len) ile veriyi işle, EVP_DigestFinal_ex(ctx, digest, &len) ile özeti al. Bitince EVP_MD_CTX_free(ctx) ile temizle. Özet unsigned char digest[EVP_MAX_MD_SIZE]'a yazılır. Test için çıktıyı sabit tutmak yeterlidir.

SHA-256 çağrı deseni

Tipik akış: EVP_MD_CTX *ctx = EVP_MD_CTX_new();, EVP_DigestInit_ex(ctx, EVP_sha256(), NULL);, EVP_DigestUpdate(ctx, "abc", 3);, EVP_DigestFinal_ex(ctx, digest, &len);, EVP_MD_CTX_free(ctx);. digest 32 baytlık özettir.

Test için özeti yazdırmak yerine printf("sha256 tamam\n") yazdırmak daha güvenlidir; çünkü özetin bayt değerleri sabit olsa da ekrana yazdırılması ortam bağımlı olur. Bu sayede çıktı deterministiktir. Üretimde özeti hex olarak yazdırırsın.

Uygulama SHA-256 hesapla

EVP_MD_CTX *ctx = EVP_MD_CTX_new(); ile bağlam oluştur. EVP_DigestInit_ex(ctx, EVP_sha256(), NULL);, EVP_DigestUpdate(ctx, "abc", 3);, unsigned char digest[EVP_MAX_MD_SIZE]; unsigned int len = 0; EVP_DigestFinal_ex(ctx, digest, &len);, EVP_MD_CTX_free(ctx);. printf("sha256 tamam\n");.

Başlangıç kodu

main.c
#include <stdio.h>
#include <openssl/evp.h>

// sha256 bağlamı oluştur
// veriyi işle ve özeti çıkar
// tamam yazdır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>
#include <openssl/evp.h>

int main(void) {
    EVP_MD_CTX *ctx = EVP_MD_CTX_new();
    EVP_DigestInit_ex(ctx, EVP_sha256(), NULL);
    EVP_DigestUpdate(ctx, "abc", 3);
    unsigned char digest[EVP_MAX_MD_SIZE];
    unsigned int len = 0;
    EVP_DigestFinal_ex(ctx, digest, &len);
    EVP_MD_CTX_free(ctx);
    printf("sha256 tamam\n");
    return 0;
}

Beklenen çıktı

sha256 tamam

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 SHA-256 parçalarını eşle

Kavram Anlamı
EVP_MD_CTX_new Bağlam oluştur
EVP_DigestInit_ex Başlat
EVP_DigestUpdate Veriyi işle
EVP_DigestFinal_ex Özeti al

2 SHA-256 özeti kaç bayttır?

  • 16 bayt
  • 24 bayt
  • 64 bayt
  • 32 bayt Doğru cevap

Açıklama: SHA-256 32 baytlık özet üretir.

3 EVP_DigestInit_ex

Soru
EVP_DigestInit_ex(ctx, ____, NULL);
Cevap
EVP_DigestInit_ex(ctx, EVP_sha256(), NULL);

Açıklama: EVP_sha256() SHA-256 algoritmasını seçer.

İleri seviye bölümündeki tüm dersler