# Şifreleme (Encryption)

Adres: https://softwaredictionary.org/tr/terimler/encryption
Kategori: Güvenlik
Son güncelleme: 2026-09-30
İngilizcesi: Encryption
Okunuşu: inkripşın

Kısaca: Şifreleme, veriyi bir anahtarla karıştırarak yalnızca doğru anahtara sahip olanın onu özgün ve okunabilir hâline geri çevirebilmesini sağlama işlemidir.

## Şifreleme nedir?

Şifreleme, okunabilir veriyi (plaintext), bir algoritma ve anahtar kullanarak okunamaz bir şifreli metne (ciphertext) dönüştürür. Şifreli metni ele geçiren biri yalnızca rastgele görünen baytlar görür; doğru anahtara sahip biri ise onu orijinal hâline geri çözebilir. Güvenlik, algoritmanın gizli tutulmasına değil, anahtarın gizli tutulmasına bağlıdır.

İki ana türü vardır. AES gibi simetrik şifreleme, şifrelemek ve çözmek için aynı gizli anahtarı kullanır ve çok hızlıdır; bu yüzden büyük veri için tercih edilir. RSA veya eliptik eğri kriptografisi gibi asimetrik (açık anahtarlı) şifreleme ise bir anahtar çifti kullanır: herkes açık anahtarla şifreleyebilir, ancak yalnızca özel anahtarın sahibi çözebilir. TLS gibi protokoller ikisini birleştirir: ortak bir anahtar üzerinde anlaşmak için açık anahtarlı kriptografiyi, gerçek trafik için ise simetrik şifrelemeyi kullanır.

Geliştiriciler genellikle HTTPS trafiği gibi aktarım hâlindeki (in transit) veriyi ve veritabanları, yedekler ve diskler gibi beklemedeki (at rest) veriyi korur. Kilitli bir kutu iyi bir benzetmedir: kutuyu herkes görebilir veya taşıyabilir, ancak yalnızca anahtarı olan açabilir. Birçok mesajlaşma uygulamasında kullanılan uçtan uca şifreleme, anahtarların yalnızca gönderende ve alıcıda olması demektir; böylece servis sağlayıcı bile mesajları okuyamaz.

Şifreleme sıklıkla hashing ve kodlama (encoding) ile karıştırılır. Hashing tek yönlüdür ve parolalar ile bütünlük kontrolleri için kullanılır; Base64 gibi kodlama ise yalnızca biçimi değiştirir ve hiçbir gizlilik sağlamaz. Şifrelemeyi güvenle kullanmak için iyi test edilmiş kütüphanelere ve AES-GCM veya ChaCha20-Poly1305 gibi modern kimlik doğrulamalı modlara güvenin, asla kendi algoritmanızı icat etmeyin ve anahtarları kaynak kodda değil, bir anahtar yönetim servisinde ya da secrets manager'da tutun.

## Önemli noktalar

- Şifreleme, plaintext'i yalnızca anahtar sahiplerinin okuyabileceği ciphertext'e dönüştürür.
- Simetrik şifreleme tek ortak anahtar kullanır; asimetrik şifreleme açık ve özel anahtar çifti kullanır.
- Veriyi hem aktarım sırasında (TLS) hem de beklemede (diskler, veritabanları, yedekler) koruyun.
- Şifreleme hashing'in aksine geri döndürülebilir; Base64 kodlaması ise şifreleme değildir.
- Denetlenmiş kütüphaneler ve kimlik doğrulamalı modlar kullanın, anahtarları koddan uzak tutun.

## Örnek: AES-256-GCM ile kimlik doğrulamalı şifreleme (Node.js)

```javascript
import { randomBytes, createCipheriv, createDecipheriv } from "node:crypto";

// A 256-bit key, loaded from a secrets manager in real apps
const key = Buffer.from(process.env.DATA_KEY, "base64");
const iv = randomBytes(12); // a new random IV for every message

// Encrypt with AES-256-GCM, an authenticated mode that detects tampering
const cipher = createCipheriv("aes-256-gcm", key, iv);
const ciphertext = Buffer.concat([cipher.update("my secret note", "utf8"), cipher.final()]);
const tag = cipher.getAuthTag();

// Decrypt: throws an error if the ciphertext or tag was modified
const decipher = createDecipheriv("aes-256-gcm", key, iv);
decipher.setAuthTag(tag);
const plaintext = Buffer.concat([decipher.update(ciphertext), decipher.final()]).toString("utf8");
```

## Sık sorulan sorular

**Şifreleme ile hashing arasındaki fark nedir?**

Şifreleme iki yönlüdür: bir anahtarla şifrelenen veri doğru anahtarla çözülebilir. Hashing tek yönlüdür; girdiye geri çevrilemeyen sabit bir parmak izi üretir. Parolaların şifrelenmek yerine hash'lenmesi gerekmesinin nedeni budur.

**Simetrik ve asimetrik şifreleme arasındaki fark nedir?**

Simetrik şifreleme hem şifrelemek hem çözmek için tek bir ortak anahtar kullanır ve hızlıdır. Asimetrik şifreleme şifrelemek için açık anahtar, çözmek için özel anahtar kullanır; bu, anahtar paylaşma sorununu çözer ancak daha yavaştır, bu yüzden gerçek sistemler genellikle ikisini birleştirir.

**Base64 şifreleme midir?**

Hayır. Base64, ikili veriyi metin karakterlerine dönüştüren bir kodlamadır ve herkes onu anahtar olmadan çözebilir. Sırlar için hiçbir koruma sağlamaz.

## Kaynaklar

- [NIST FIPS 197: Advanced Encryption Standard (AES)](https://csrc.nist.gov/pubs/fips/197/final)

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
