AES Şifreleme Aracı — GCM, CBC ve CTR
Ücretsiz online AES şifreleme — AES-128/192/256, GCM/CBC/CTR, parola (PBKDF2) veya ham anahtar. %100 tarayıcınızda çalışır; hiçbir şey yüklenmez.
Gelişmiş seçenekler
Aynı anahtarla asla bir IV'yi yeniden kullanmayın. Güvenli rastgele bir IV üretmek için boş bırakın.
AES Şifreleme Nedir?
AES (Advanced Encryption Standard / Gelişmiş Şifreleme Standardı), Joan Daemen ve Vincent Rijmen'in Rijndael tasarımına dayanan ve NIST tarafından 2001'de FIPS 197'de standartlaştırılan simetrik bir blok şifresidir. Verileri, 128, 192 veya 256 bitlik bir anahtar kullanarak sabit 128 bitlik bloklar halinde şifreler ve aynı anahtar hem şifreler hem de şifresini çözer. HTTPS trafiğinden disk şifrelemesine kadar her şeyi koruyan, modern kriptografinin iş atıdır.
Ham bir blok şifresi yalnızca tek bir 16 baytlık bloğu karıştırır, bu yüzden AES her zaman blokları birbirine zincirleyen bir çalışma modu içinde çalıştırılır. Bu araç, hepsi tarayıcının Web Crypto API'si tarafından yerel olarak sağlanan üç mod sunar: GCM, CBC ve CTR. GCM (Galois/Counter Mode, NIST SP 800-38D), kimlik doğrulamalı olduğu için önerilen varsayılandır — şifreli metnin yanında 128 bitlik bir kimlik doğrulama etiketi üretir, böylece şifre çözerken herhangi bir kurcalama tespit edilir. CBC ve CTR yalnızca gizlilik sağlar; tek başlarına şifreli metnin değiştirilip değiştirilmediğini size söyleyemezler — TLS 1.3'ün (RFC 8446) her CBC şifreleme paketini GCM gibi kimlik doğrulamalı modlar lehine kaldırmasının nedeni de budur.
Burada ECB modunun olmadığını fark edeceksiniz ve bu kasıtlıdır. ECB, aynı düz metin bloklarının her birini aynı şifreli metin bloğuna şifreler, bu yüzden büyük ölçekli yapı doğrudan sızar — ünlü 'ECB penguen' görüntüsü, şifrelemeden sonra bile hâlâ görünür şekilde bir penguendir. Web Crypto API tam olarak bu nedenle ECB'yi atlar (yalnızca AES-CBC, AES-CTR ve AES-GCM'i uygular) ve biz de öyle yapıyoruz. ECB kullanan eski bir sistemle birlikte çalışmanız gerekiyorsa, bunu zayıflığı yeniden üretmek için değil, o sistemi geçirmek için bir neden olarak görün.
Çoğu insan 32 baytlık rastgele bir anahtar yerine bir parola yazdığından, araç AES anahtarını parolanızdan PBKDF2-HMAC-SHA256 ile 600.000 yineleme ve 16 baytlık rastgele bir tuzla türetir — bu, güncel OWASP Parola Saklama kılavuzuyla (ve en az 128 bit uzunluğunda bir tuz gerektiren NIST SP 800-132 ile) eşleşir. Bu, zayıf bir parolayı kaba kuvvetle kırmayı yavaşlatır, ama sihir değildir: bu araç modları öğrenmek, şifreli metinde hata ayıklamak ve tek seferlik kişisel veriler içindir — özel bir anahtar yönetimi sistemine ait olan üretim sırlarını korumak için değil. Güçlü bir parola için rastgele şifre üreticimizle bir tane oluşturun; gerçek rastgele bir anahtar için gizli anahtar üreticiyi kullanın.
// AES-256-GCM with a passphrase (PBKDF2-HMAC-SHA256, 600,000 iterations).
// Identical code runs in the browser and in Node.js 20+ via Web Crypto.
async function aesGcmEncrypt(plaintext, passphrase) {
const enc = new TextEncoder();
const salt = crypto.getRandomValues(new Uint8Array(16));
const iv = crypto.getRandomValues(new Uint8Array(12));
const baseKey = await crypto.subtle.importKey(
'raw', enc.encode(passphrase), 'PBKDF2', false, ['deriveKey']);
const key = await crypto.subtle.deriveKey(
{ name: 'PBKDF2', salt, iterations: 600000, hash: 'SHA-256' },
baseKey, { name: 'AES-GCM', length: 256 }, false, ['encrypt']);
const ct = new Uint8Array(await crypto.subtle.encrypt(
{ name: 'AES-GCM', iv }, key, enc.encode(plaintext)));
const packed = new Uint8Array([...salt, ...iv, ...ct]); // salt(16) | iv(12) | ct+tag
return btoa(String.fromCharCode(...packed)); // self-contained Base64
} Temel Özellikler
Varsayılan olarak GCM kimlik doğrulamalı şifreleme
GCM, şifreli metin artı 128 bitlik bir kimlik doğrulama etiketi üretir, böylece tek bir bayt bile değiştirilmişse şifre çözme açıkça başarısız olur. Onlarla birlikte çalışmanız gerektiğinde CBC ve CTR bir tık uzaktadır.
Kendi kendine yeten şifreli metin
Parola modu, rastgele tuzu, IV'yi ve etiketi tek bir Base64 dizesine paketler, böylece şifreyi çözecek kişinin yalnızca parolaya ihtiyacı olur — kopyalanacak veya kaybedilecek ayrı alan yoktur.
Parola veya ham anahtar
Bir parola yazın (PBKDF2-HMAC-SHA256 ile 600.000 yineleme uygulanarak uzatılır) ya da tam olarak 128/192/256 bitlik bir anahtarı hex veya Base64 olarak yapıştırın; uzunluğu doğrulayan canlı bir bayt sayısı rozetiyle.
OpenSSL uyumlu çıktı
openssl enc komutunun ve CryptoJS'in okuduğu Salted__ biçimini üretmek için OpenSSL modunu açın; eşdeğer CLI komutu canlı olarak gösterilir, böylece bir terminalde yeniden üretebilirsiniz.
%100 tarayıcınızda
Her bayt, Web Crypto API ile yerel olarak şifrelenir. Network sekmenizi açın; sayfadan hiçbir şeyin çıkmadığını görürsünüz — çevrimdışıyken bile çalışır.
Base64 veya Hex çıktı
Sonucu, hedef sisteminizin beklediği kodlamada kopyalayın ve segment döküm şeridinde tuz, IV, şifreli metin ve etiket uzunluklarını inceleyin.
AES Şifreleme Örnekleri
GCM + parola (kendi kendine yeten, deterministik olmayan)
The quick brown fox jumps over the lazy dog.
tuz (16 B) + IV (12 B) + şifreli metin + etiket (16 B), Base64 kodlu — her çalıştırmada yeni bir değer
Mod GCM, Anahtar boyutu 256, Anahtar türü Parola ve hunter2 parolasıyla bu cümle, tek bir kendi kendine yeten Base64 dizesine şifrelenir. İki kez şifreleyin ve tamamen farklı iki çıktı elde edersiniz — bu kasıtlıdır. Parola modu her şifrelemede yeni bir 16 baytlık tuz ve yeni bir 12 baytlık IV üretir, bu yüzden aynı düz metin asla aynı şifreli metni üretmez ve bir gözlemci iki mesajın aynı olduğunu anlayamaz. Çıktının altındaki segment şeridi tam düzeni gösterir: önce tuz, sonra IV, ardından 128 bitlik GCM etiketi eklenmiş şifreli metin. Şifreyi çözmek için alıcının yalnızca parolaya ve aynı moda ile anahtar boyutuna ihtiyacı vardır — tuz, IV ve etiketin hepsi dizenin içinde seyahat eder.
OpenSSL uyumlu çıktı (CBC + parola)
Attack at dawn!
U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=
Mod CBC, Anahtar türü Parola, correct-horse parolası, KDF PBKDF2 ve 10.000 yinelemeyle OpenSSL uyumlu modu açın. Araç böylece OpenSSL Salted__ biçimini üretir: her zaman U2FsdGVkX1 ile başlayan Base64, bu da 8 baytlık Salted__ başlığının Base64 kodlamasıdır. Her seferinde yeni, rastgele bir 8 baytlık tuz üretildiğinden tam dize her çalıştırmada değişir, ancak her biri komut satırında şununla çözülür: echo 'U2FsdGVkX18AESIzRFVmd1PBwxIFQpF+VgIhTK0aDHQ=' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 10000 -pass pass:correct-horse -base64 -A — bu da Attack at dawn! yazdırır. CryptoJS veya OpenSSL 1.0.2 ve öncesiyle eşleşmek için PBKDF2 yerine EVP-MD5 seçin. openssl enc'in GCM desteği olmadığını, dolayısıyla OpenSSL modunun yalnızca CBC olduğunu unutmayın.
AES ile Metin Nasıl Şifrelenir
- 1
Bir mod ve anahtar boyutu seçin
En güçlü makul varsayılan için Modu GCM (önerilen) ve Anahtar boyutunu 256 üzerinde bırakın. Yalnızca hedeflediğiniz bir sistem gerektiriyorsa CBC veya CTR'a geçin.
- 2
Parola veya ham anahtar seçin
Anahtar türünü Parola üzerinde tutun ve güçlü bir parola girin, ya da Ham anahtar'a geçin ve tam olarak 128/192/256 bitlik bir anahtarı hex veya Base64 olarak yapıştırın. Bayt sayısı rozeti, ham anahtarınızın geçerli bir uzunlukta olup olmadığını doğrular.
- 3
Şifrelenecek metni girin
Düz metninizi yazın veya yapıştırın. Şifreleme, siz yazdıkça otomatik olarak, tamamen tarayıcınızda çalışır — düğme gidiş-dönüşü ve yükleme yoktur.
- 4
Kendi kendine yeten şifreli metni kopyalayın
Sağdaki Base64 sonucu zaten tuzu, IV'yi ve kimlik doğrulama etiketini içerir. Bayt düzenini görmek için segment şeridini kullanın, ardından Kopyala'ya tıklayın. Hedef sisteminiz bekliyorsa çıktı kodlamasını Hex'e çevirin.
- 5
İhtiyacınız olduğunda geri çözün
Şifreli metni, parolayı ve aynı modu ile anahtar boyutunu alıcıya verin, ya da kendiniz tersine çevirmek için AES şifre çözme sayfasını açın.
Yaygın AES Şifreleme Hataları
Bir parolayı ham anahtarla karıştırmak
Ham bir anahtar tam olarak 16, 24 veya 32 bayt rastgele veri olmalıdır (hex veya Base64 olarak girilir); bir parola ise herhangi bir metindir ve önce bir KDF tarafından uzatılmalıdır. Ham anahtar'ı seçip insan tarafından okunabilen bir parola yapıştırmak, ya uzunluk hatası verir ya da zayıf bir anahtar üretir.
Key type: Raw key Key (hex): correct horse battery staple (not hex, not 32 bytes)
Key type: Passphrase Passphrase: correct horse battery staple (stretched with PBKDF2)
Aynı anahtarla bir IV'yi yeniden kullanmak
IV, belirli bir anahtar altında mesaj başına benzersiz olmalıdır. Onu yeniden kullanmak GCM için ölümcüldür (kimlik doğrulama anahtarını sızdırabilir) ve CBC ile CTR için gizliliği bozar. Aracın her seferinde yeni, rastgele bir IV üretmesine izin verin.
// same key, same IV for two messages encrypt(key, iv, a); encrypt(key, iv, b);
// fresh random IV each time (the default) encrypt(key, randomIV(), a);
Tuzu, IV'yi veya etiketi kaybetmek
Yalnızca şifreli metin baytlarını kopyalar ve öne eklenen tuzu/IV'yi — ya da sona eklenen GCM etiketini — atarsanız, veri asla şifresi çözülemez. Yalnızca ortasını değil, kendi kendine yeten dizenin tamamını saklayın.
stored = ciphertext // salt + IV + tag thrown away
stored = salt + iv + ciphertext + tag // the full Base64 string
GCM çıktısının her çalıştırmada eşleşmesini beklemek
GCM (ve genel olarak parola modu) rastgele bir tuz ve IV kullanır, bu yüzden aynı metin her seferinde farklı bir Base64 dizesine şifrelenir. Bu bir hata değil, bir güvenlik özelliğidir — bir dinleyicinin iki şifreli metnin aynı mesajı şifrelediğini anlayamayacağı anlamına gelir.
assert(encrypt(msg) === encrypt(msg)) // fails — and should
assert(decrypt(encrypt(msg)) === msg) // this is what must hold
AES Şifreleme ile Neler Yapabilirsiniz
- AES modlarının nasıl davrandığını öğrenin
- Kimlik doğrulamanın, IV uzunluğunun ve şifreli metin boyutunun nasıl değiştiğini görmek için aynı girişle GCM, CBC ve CTR arasında geçiş yapın. NIST SP 800-38D'nin tam olarak neyi belirttiğini anlamanın pratik bir yolu.
- Başka bir sistemin okuyabileceği şifreli metin üretin
- OpenSSL Salted__ biçiminde (veya ham anahtar artı IV olarak) çıktı üretin, böylece openssl veya bir kripto kütüphanesi kullanan bir arka uç, betik veya ekip arkadaşı sürtünmesiz şekilde şifresini çözebilir.
- Kısa bir not veya kod parçası şifreleyin
- Tek seferlik bir kişisel metin parçasını — cihazlar arasında taşıdığınız bir kurtarma ifadesi, bir destek talebindeki bir kod parçası — yalnızca sizin bildiğiniz bir parolayla koruyun. Düzenlemeye tabi veya üretim sırları için değildir.
- Bir şifreleme biçimini prototipleyin
- Kodu yazmadan önce, bayt sırasını ve uzunluklarını doğrulamak için segment dökümünü kullanarak tuz/IV/etiket düzeninizi ve KDF ayarlarınızı burada netleştirin.
- Test vektörleri üretin
- Kendi şifre çözme testlerinizi beslemek için sabit bir parola ve modla bilinen şifreli metin oluşturun, ardından gidiş-dönüşü AES şifre çözme sayfasında doğrulayın.
AES Modları ve Anahtar Türetme
- GCM (Galois/Counter Mode) — kimlik doğrulamalı, önerilen
- Gizlilik artı 128 bitlik bir kimlik doğrulama etiketi (NIST SP 800-38D). Her şifrelemede rastgele üretilen 96 bitlik (12 baytlık) bir IV kullanır ve hem şifreleme hem de şifre çözme iyi paralelleştirilir. Asla çiğnememeniz gereken tek kural: aynı anahtarla bir IV'yi asla yeniden kullanmayın. SP 800-38D, tek bir anahtarı yaklaşık 2^32 rastgele üretilmiş IV ile sınırlar ve bir tekrar, iki düz metnin XOR'unu sızdırır ve hatta etiketi koruyan kimlik doğrulama anahtarını bile açığa çıkarabilir. Neredeyse her şey için en iyisidir.
- CBC (Cipher Block Chaining) — yalnızca gizlilik
- Her blok, rastgele bir 16 baytlık IV kullanılarak önceki şifreli metin bloğuyla XOR'lanır. Yerleşik bir kimlik doğrulaması yoktur, bu yüzden ayrı bir MAC ile eşleştirilmelidir — örneğin HMAC üreticimizle önce şifrele-sonra-MAC uygula — ve tarihsel olarak dolgu kehaneti (padding-oracle) saldırılarına yatkındır (Vaudenay, EUROCRYPT 2002). Burada OpenSSL ve daha eski sistemlerle birlikte çalışabilirlik için sunulmuştur.
- CTR (Counter) — yalnızca gizlilik, akış benzeri
- Bir sayacı şifreleyerek AES'i bir akış şifresine dönüştürür, bu yüzden herhangi bir bayt uzunluğu dolgu olmadan çalışır ve bloklar serbestçe paralelleştirilir. CBC gibi tek başına bütünlük sağlamaz ve bir anahtar altında sayacı/IV'yi yeniden kullanmak felakettir. Rastgele erişime veya akış semantiğine ihtiyaç duyduğunuzda kullanışlıdır.
- ECB — sunulmuyor (tasarım gereği)
- Electronic Codebook her bloğu bağımsız olarak şifreler, bu yüzden aynı düz metin blokları aynı şifreli metni üretir ve desenler sızar — ünlü 'ECB penguen'. Web Crypto API bunu kasıtlı olarak uygulamaz, biz de öyle. Eski bir eş ECB gerektiriyorsa, bunu yeniden üretilecek bir biçim değil, düzeltilecek bir hata olarak görün.
- Anahtar türetme: 600.000'e karşı 10.000'e karşı 1 yineleme
- Varsayılan parola modunda bu araç, OWASP'a göre 16 baytlık bir tuzla PBKDF2-HMAC-SHA256'yı 600.000 yinelemede kullanır (yüzbinlerce kez uygulanan aynı SHA-256 özeti). OpenSSL uyumlu modda PBKDF2 varsayılan olarak yalnızca 10.000 yinelemedir (openssl enc varsayılanı) ve CryptoJS ile eski OpenSSL'in kullandığı eski EVP_BytesToKey KDF'si tek bir MD5 geçişi çalıştırır — kat kat daha zayıf. Daha fazla yineleme, tahmin başına daha yavaş bir kaba kuvvet anlamına gelir; modern varsayılanın bu kadar yüksek olmasının nedeni budur. Argon2 ve scrypt daha da güçlüdür, ancak Web Crypto'nun bir parçası değildir, bu yüzden burada kapsam dışıdır; parola saklama için OWASP'ı izleyin ve Argon2id'yi tercih edin.
AES Şifreleme En İyi Uygulamaları
- Bir eş aksini gerektirmedikçe GCM'i tercih edin
- Kimlik doğrulamalı şifreleme, CBC ve CTR'ın sessizce geçirdiği kurcalamayı yakalar. Yalnızca birlikte çalışabilirlik için CBC veya CTR'a düşün ve öyle yaparsanız bir MAC ekleyin.
- Her mesaj için yeni, rastgele bir IV kullanın
- Araç bunu otomatik olarak yapar. IV'yi manuel olarak geçersiz kılarsanız, aynı anahtarla asla bir tanesini yeniden kullanmayın — GCM için bir tekrar felakettir ve CBC için anlamsal güvenliği bozar.
- Güçlü parolalar ve gerçek rastgele anahtarlar seçin
- PBKDF2 kaba kuvveti yavaşlatır ama zayıf bir parolayı kurtaramaz. Şifre üreticiyle uzun bir parola üretin ya da gizli anahtar üreticiyle gerçek rastgele bir anahtar oluşturun.
- Tuzu, IV'yi ve etiketi şifreli metinle birlikte tutun
- Bunlar gizli değildir, ancak onlar olmadan şifre çözme başarısız olur. Bu aracın kendi kendine yeten biçimi üçünü de bir araya getirir; ham anahtar çıplak şifreli metin modunu kullanıyorsanız, IV'yi ayrıca kopyalayın ve şifreli metinle birlikte saklayın.
- Herhangi bir online araçta üretim veya düzenlemeye tabi sırları şifrelemeyin
- Tamamen istemci tarafında olsa bile bir tarayıcı aracı, öğrenme, hata ayıklama ve kişisel tek seferlik işler içindir. Gerçek sırlar, denetlenmiş anahtar işleme ve döndürmeye sahip, incelenmiş bir anahtar yönetimi sistemine aittir. AES-256'nın kendisi güçlüdür — NSA CNSA 2.0 paketi kapsamında ÇOK GİZLİ'ye kadar bilgiler için onaylıdır — ve gerçek dünyadaki kırılmalar şifreleme algoritmasından değil, uygulama hatalarından kaynaklanır.
AES Şifreleme SSS
Metni online şifrelemek güvenli mi?
AES, anahtar olmadan şifresi çözülebilir mi?
GCM'e karşı CBC — hangi modu kullanmalıyım?
AES-128'e karşı AES-256 — 256 buna değer mi?
Burada şifrelediğimde verilerim yükleniyor mu?
Parola ile anahtar arasındaki fark nedir?
OpenSSL veya CryptoJS'in çözebileceği şekilde şifreleyebilir miyim?
İlgili Araçlar
Tüm araçları görüntüleyin →AES Şifre Çözme Aracı — OpenSSL ve CryptoJS Uyumlu
Güvenlik Araçları
AES şifreli metnini online çözün — GCM/CBC/CTR, parola veya ham anahtar, OpenSSL ve CryptoJS "U2FsdGVkX1" biçimini otomatik algılar. %100 tarayıcıda, anahtarlar sayfadan asla çıkmaz.
Bcrypt Karma Oluşturucu ve Doğrulayıcı
Güvenlik Araçları
bcrypt şifre karmalarını çevrimiçi oluşturun ve doğrulayın — ayarlanabilir maliyet, $2b$/$2a$/$2y$ önekleri. %100 tarayıcınızda; şifreniz asla yüklenmez.
HMAC Üretici ve İmza Doğrulayıcı
Güvenlik Araçları
Ücretsiz online HMAC üretici ve doğrulayıcı. Metin, Hex veya Base64 anahtarlarla ve Hex/Base64/Base64URL çıktısıyla HMAC-SHA256/SHA1/SHA384/SHA512 hesaplayın. %100 tarayıcınızda — anahtarlar sayfadan asla çıkmaz.
JWT Çözücü
Güvenlik Araçları
Ücretsiz JWT çözücümüzle JWT token'larını online çözün. header, payload, signature, son kullanma, algoritma ve claim'leri anında inceleyin. %100 tarayıcıda çalışır — token'ınız cihazınızdan ayrılmaz. Kayıt yok, izleme yok.
JWT Oluşturucu ve Kodlayıcı
Güvenlik Araçları
Ücretsiz online JWT oluşturucu ve kodlayıcı. header ve payload'ı oluşturun, HS256, RS256 ya da ES256 ile anında imzalayın. %100 tarayıcıda çalışır — gizli anahtarınız ve özel anahtarınız cihazınızdan ayrılmaz.
Ücretsiz JWT Gizli Anahtar Oluşturucu — HS256/384/512
Güvenlik Araçları
HS256/384/512 için güçlü, RFC uyumlu bir JWT gizli anahtarı üretin. %100 tarayıcınızda; base64url, base64 veya hex; .env için tek tıkla kopyalayın.