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
#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
#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
EVP_DigestInit_ex(ctx, ____, NULL);
EVP_DigestInit_ex(ctx, EVP_sha256(), NULL);
Açıklama: EVP_sha256() SHA-256 algoritmasını seçer.