AES-128, AES-192 veya AES-256 (FIPS 197) ile GCM (kimlik doğrulamalı şifreleme), CBC, CTR veya ECB modunda şifreleyin veya çözün. Anahtarlar ham hex veya Base64 baytlarıdır ya da PBKDF2-HMAC-SHA256 ile bir paroladan türetilir. GCM, AAD'yi destekler ve kimlik doğrulama etiketini ayrı gösterir; CBC/CTR/ECB çıktıları OpenSSL enc ile uyumludur. Özetler için Özet Oluşturucu, anahtarlı MAC'ler için HMAC Oluşturucu, eski şifreler için bu ailedeki Eski Şifreler sayfasına bakın. Tamamen yerel çalışır — anahtarlar ve düz metin sekmenizden asla çıkmaz. 200 MB'a kadar dosyalar.
Buraya yazılan her şey bu sekmede kalır — ama bu, “üretim sırları için güvenli” olduğu anlamına gelmez. Tarayıcı belleği, uzantılar ve omuz üzerinden bakanlar yapıştırdığınızı görür. Bu sayfayı öğrenmek, doğrulamak ve birlikte çalışabilirliği test etmek için kullanın; canlı müşteri verilerini işlemek için değil.
Yön:Mod:Çıktı:
GCM = 12 baytlık nonce ve 128 bitlik kimlik doğrulama etiketiyle AES-GCM (AEAD: gizlilik + bütünlük). Güvenlik hedefi olduğunda varsayılan.
Hex, boşlukları, iki noktaları ve 0x önekini kabul eder.
Tuz (hex, 8–16 bayt):
Yineleme:Anahtar boyutu:
Tuz şifreli metinle birlikte gider - çözen kişinin aynı parolaya, tuza, yineleme sayısına ve anahtar boyutuna ihtiyacı vardır. OWASP, en az 600.000 PBKDF2-HMAC-SHA256 yinelemesini önerir.
IV / nonce(GCM: 12 bayt; CBC/CTR: 16 bayt — hex)
GCM veya CTR'de aynı anahtar altında nonce'u asla yeniden kullanmayın.
AAD(ek kimlik doğrulamalı veri — kimlik doğrulanır ama şifrelenmez, isteğe bağlı)
Etiket uzunluğu:
Kimlik doğrulama etiketi(hex, bu sayfanın şifrelemede yazdırdığı gibi — çözmek için gereklidir)
Plaintext text (the data to encrypt, UTF-8 encoded)
Bir dosya seçin veya buraya sürükleyip bırakın Dosya yerel olarak 8 MB parçalar hâlinde okunur; hiçbir şey yüklenmez. En fazla 200 MB.
Ciphertext (tek satır: mod, anahtar boyutu, değer; parametreler aşağıdaki satırlarda)
Parametre satırları, anahtarın tam okunuşunu, IV'yi, AAD boyutunu ve etiketi kaydeder; böylece kopyalanan bir sonuç başka bir makinede her zaman yeniden üretilebilir.
Hangi modu seçmeliyim? GCM varsayılan cevaptır: hem şifreler hem de kimlik doğrulaması yapar — etiket satırı kurcalamayı tespit edilebilir kılar (etiketin bir baytını değiştirerek çözmeyi deneyin, sayfa reddeder). CBC blok örüntülerini gizler ama bütünlük sağlamaz; mecburen kullanacaksanız bir HMAC ile eşleştirin (bkz. HMAC Oluşturucu). CTR AES'i bir akış şifresine çevirir — dolgu yok, ama aynı anahtar altında yeniden kullanılan bir nonce hem CTR'de hem GCM'de felakettir. ECB yalnızca uyumluluk ve öğretim içindir: aynı düz metin blokları aynı şifreli metin bloklarına şifrelenir (ünlü ECB penguen örneği).
OpenSSL uyumluluğu — bu sayfadan alınan CBC ve CTR çıktıları (PKCS#7 dolgusu, ham anahtar) openssl enc komut satırıyla gidip gelir: openssl enc -aes-256-cbc -K <64-hex-anahtar> -iv <32-hex-iv> -in msg.txt -out msg.enc openssl enc -d -aes-256-cbc -K <anahtar> -iv <iv> -in msg.enc -out msg.txt Aynısı -aes-128-cbc, -aes-192-cbc, -aes-256-ctr ile de çalışır (16 baytlık IV = başlangıç sayaç bloğu). openssl enc GCM'i desteklemez — kimlik doğrulamalı şifreleme için bu sayfayı veya OpenSSL 3.3+ sürümündeki openssl aesgcm komutunu kullanın.
Bunun yerine Çin ulusal şifresine mi ihtiyacınız var? SM4 (GB/T 32907-2016) — Çin ticari kriptografisinde zorunlu kılınan blok şifre; AES ile aynı 128 bitlik blok ve anahtar boyutuna sahip ama kendi anahtar programı ve S-kutusu ile ECB ve CBC modunda kendi sayfasında çalışır: SM4 Şifreleme / Şifre Çözme. SM paketinin geri kalanı da orada: SM3 (özet), SM2 (açık anahtar) ve SM9 (kimlik tabanlı kriptografi).
Öz test Sayfa motorlarını bağımsız referanslara karşı çalıştırır: dört mod için bilinen yanıt vektörleri (bağımsız bir yerel uygulamayla üretilmiş), AAD ile ve AAD olmadan GCM etiket vektörleri, WebCrypto motorunun saf JS AES motoruyla çapraz doğrulaması, GCM gidiş-dönüşü ve olumsuz testler (kurcalanmış etiket, yanlış anahtar başarısız olmalı). Hiçbir şey bir yere gönderilmez.
AES şifrelemesi sıfırdan anlatılmıştır
Tek cümleyle: AES, dünya çapında standart bir blok şifredir — 128, 192 veya 256 bitlik bir anahtar altında 16 baytlık blokları karıştırır — ve içinde çalıştırdığınız mod (GCM, CBC, CTR, ECB) bu blokların nasıl zincirlendiğini, IV'nin ne işe yaradığını ve kurcalamanın fark edilip edilemeyeceğini belirler; bir nedeniniz yoksa GCM'i seçin.
AES'in kendisi nedir (FIPS 197)
Blok şifre. AES (NIST tarafından 2001'de FIPS 197 olarak standartlaştırılan Rijndael tasarımı) her seferinde tam olarak 16 bayt şifreler. Anahtar uzunluğunuz — 16, 24 veya 32 bayt — AES-128, -192 veya -256'yı ve iç tur sayısını (10, 12, 14) seçer. Her tur, bloğu anahtarınızdan türetilen tur anahtarlarıyla yer değiştirme tabloları, satır kaydırmaları ve sütun karıştırmalarıyla karıştırır. Pratik bir saldırı şifrenin kendisini kırmaz: gerçek dünyadaki arızalar neredeyse her zaman mod, IV veya anahtar yönetimi hatalarıdır; bu sayfanın geri kalanı da bundan bahseder.
Neden bir mod gerekir? Çünkü mesajlar nadiren 16 bayttır. Mod, blok şifrelemelerini birbirine bağlar: ECB blokları bağımsız şifreler; CBC her bloğu bir önceki şifreli metinle XOR'lar; CTR bir sayacı şifreler ve veriyle bir akış şifresi gibi XOR'lar; GCM CTR'nin üzerine kurulur ve bir kimlik doğrulama etiketi ekler. AES aynı kalır — mod, elde ettiğiniz garantiler hakkında her şeyi değiştirir.
Anahtarlar ve parolalar. Bir AES anahtarı 16, 24 veya 32 rastgele bayttır. İnsan parolası bu değildir: bu sayfanın Parola seçeneği, PBKDF2-HMAC-SHA256 ile uygun bir anahtar türetir (varsayılan 600.000 yineleme, OWASP 2023 taban çizgisi — KDF ayrıntıları için HMAC Oluşturucuya bakın). Parola dizgisini asla doğrudan AES anahtarı olarak kullanmayın: entropisi uzunluğunun küçük bir kısmıdır.
Dört mod karşılaştırması
Mod
IV / nonce
Bütünlük
Notlar
GCM
12 bayt, mesaj başına benzersiz
Evet — 96..128 bit etiket
AEAD: her yerde önerilen varsayılan (TLS 1.3, SSH, dosya biçimleri). AAD de kabul eder.
CBC
16 bayt, tahmin edilemez
Hayır
PKCS#7 dolgusu; klasik, ama yanında bir MAC gerektirir. Dolgu-oracle hataları CBC'nin klasik tuzağıdır.
CTR
16 baytlık başlangıç sayacı
Hayır
Dolgu yok, akış benzeri, rastgele erişim; tek anahtar altında nonce yeniden kullanımı düz metin XOR düz metni sızdırır.
ECB
yok
Hayır
Aynı bloklar → aynı şifreli metin. ECB-penguen gösterimi. Yalnızca uyumluluk için.
IV kuralları tek paragrafta. IV bir sır değildir — şifreli metnin yanında gönderin — ama benzersizlik kuralları farklıdır: CBC tahmin edilemez bir IV ister; GCM ve CTR yalnızca aynı anahtarla aynı nonce'un asla yeniden kullanılmamasını ister (GCM nonce yeniden kullanımı daha kötüdür: kimlik doğrulama alt anahtarını sızdırır). Bu sayfanın Rastgele IV düğmesi tarayıcının güvenli RNG'sini kullanır; Tümü sıfır düğmesi test vektörlerini yeniden üretmek içindir, gerçek mesajlar için değildir.
Dolgu. CBC ve ECB tam bloklara ihtiyaç duyar; bu yüzden PKCS#7 dolgusu her biri dolgu uzunluğuna eşit 1..16 bayt ekler. CBC şifreli metinlerinin 16 bayta kadar büyümesinin ve yanlış anahtarla çözmenin genellikle dolgu hatasıyla başarısız olmasının nedeni budur. CTR ve GCM akış benzeridir ve dolguya ihtiyaç duymaz — şifreli metin uzunluğu düz metin uzunluğuna tam olarak eşittir (CTR modunda Örnek'i deneyin: 43 bayt girer, 43 bayt çıkar).
CFB ve OFB (kalan iki klasik mod) bu sayfada uygulanmamıştır: CTR gibi akış benzeridirler ama ona göre bir avantajları yoktur ve çoğunlukla eski protokollerde kalmışlardır.
GCM neler ekler (AEAD, etiketler, AAD)
Kimlik doğrulamalı şifreleme. GCM = CTR şifrelemesi + şifreli metin, IV ve AAD üzerinde bir GHASH kimlik doğrulayıcı. Çıktı etiketi her şeyin bir parmak izidir: şifreli metnin, IV'nin veya AAD'nin tek bir bitini değiştirirseniz etiket artık eşleşmez; böylece alıcı mesajın bozulmadığını ve bir anahtar sahibinden geldiğini kanıtlayabilir. CBC+HMAC aynısını yalnızca doğru birleştirirseniz (önce şifrele, sonra MAC) sağlar — GCM bunu tasarımı gereği doğru yapar.
AAD. Ek kimlik doğrulamalı veri açık olarak taşınır ama etiket tarafından kapsanır: protokol başlıkları, dosya adları, algoritma tanımlayıcıları. Alıcı, birebir aynı AAD baytlarını sağlamalıdır, aksi halde etiket denetimi başarısız olur — amaç da budur.
Etiket uzunluğu. Varsayılan 128 bitlik etiket önerilendir; daha kısa etiketler (96..120 bit) boyut karşılığında sahtecilik direncinden ödün verir. 96 bitin altında GCM'in güvenlik ispatları hızla bozulur; bu nedenle bu sayfa orada durur.
Nonce felaketi. Aynı anahtar altında 12 baytlık bir GCM nonce'unu yeniden kullanmak, iki mesajın düz metin XOR'unu ve kimlik doğrulama alt anahtarını sızdırır — bundan sonra o anahtar altındaki tüm gelecek mesajlar için sahtecilik mümkün olur. Benzersizliği garanti edemeyen sistemler, nonce yeniden kullanımına dayanıklı varyantları (AES-GCM-SIV, RFC 8452) kullanır.
Çapa değerleri — bu sayfada yeniden üretin
İlk satır, ünlü tek blokluk FIPS 197 örneğidir; geri kalanlar bağımsız bir yerel uygulama (Node.js üzerinden OpenSSL) ile üretilmiş ve bu sayfanın motorlarında yeniden doğrulanmıştır. Her satırı yeniden üretmek için anahtarı, IV'yi ve girdiyi sayfaya yapıştırın.
Durum
Girdiler
Beklenen çıktı
AES-128 tek blok (FIPS 197 tarzı)
key 000102..0f, plaintext 00112233..ff
69c4e0d86a7b0430d8cdb78070b4c55a
AES-128-GCM
key 000102..0f, IV 606162..6b, plaintext 0011..ef ×2
ct 275f095bedfda377063fee326128892188377b410698ed03a022b9971bb4bdbe, tag 87ea7770714048977de2fd8dac645ecf
AES-256-GCM, aynı ama AAD deadbeef
key 000102..1f
ct eacab966ff15e518f48f5390be502fbc2756ccee0dcfff36a282c50bf5593ae7, tag aead900e895c88252d0388d7aefce5c8
AES-256-CBC
key 000102..1f, IV 101112..1f, plaintext 0011..ef ×2
IV gerektirmediği için ECB kullanmak. Kolaylık bir tuzaktır: blok örüntüleri doğrudan şifreli metne sızar (bir bitmap'i şifrelerseniz resmi hâlâ görebilirsiniz). ECB yalnızca tek bloklar veya tam olarak 16 baytlık rastgele anahtarlar için kabul edilebilir — pratikte, asla tercih edilmemelidir.
Nonce/IV'yi yeniden kullanmak. Tek bir anahtar altında GCM veya CTR ile bu, her şeyi aynı anda bozan tek hatadır. Sayaç tabanlı sistemler (bu sayfanın Rastgele IV düğmesi) bunu imkânsız kılmak için vardır.
IV'yi gizli saymak. Değildir. Şifreli metnin yanında saklayın veya iletin. Gizlemenin bir faydası yoktur ve yeniden kullanıma davet eder.
Bir parolayı anahtar olarak kullanmak."hunter2hunter2hunter2hunter2" 32 bayttır ama 256 bit entropi değildir — dolguyla süslenmiş bir sözlük kelimesidir. PBKDF2 ile türetin (bu sayfada yerleşik) veya rastgele bir anahtar üretin.
CBC'nin kurcalamayı algıladığını varsaymak. CBC şifreli metninde bir biti çevirin; çözme “başarılı” olur ama sessizce bozulmuş düz metin üretir. Yalnızca GCM etiketi (veya açık bir HMAC) kurcalamayı görünür kılar.
GCM şifreli metinlerini eşitlik için karşılaştırmak. Rastgele nonce'larla aynı düz metin her seferinde farklı şifrelenir — bu bir özelliktir. Deterministik şifreleme farklı, özel bir araçtır.
SSS
AES-128 hâlâ güvenli mi, yoksa 256 mı gerekir? Her ikisi de gerçekçi saldırganlara karşı güvenlidir; bilinen en iyi saldırılar payın yalnızca küçük bir kısmını azaltır. AES-256 esas olarak uzun vadeli sırlar ve kuantum sonrası güvenlik payı için önemlidir (Grover algoritması anahtar gücünü yarıya indirir, böylece AES-256 yaklaşık 128 bit eşdeğeri kalır).
Neden openssl enc GCM yapmaz?enc komutu AEAD'den önce gelir ve bir etiket taşıyacak bir yöntemi yoktur; OpenSSL 3.3, bunun yerine özel bir aesgcm komutu ekledi. Bu sayfanın GCM çıktısı etiketi ayrı bir satırda tutar, böylece ikisini açıkça taşıyabilirsiniz.
Anahtar sarma (AES-KW) nedir? Diğer anahtarları sabit 64 bitlik parçalarla ve kendi bütünlük denetimiyle şifrelemeye yönelik özel bir moddur. Girdileri ve çıktıları mesaj yerine anahtar biçiminde olduğu için burada sunulmaz — yanlış kullanım yaygındır.
CTR şifrelemesi düz metinle aynı uzunlukta, CBC'ninki neden daha uzun? CTR ve GCM akış benzeri çalışır (dolgu yoktur); CBC/ECB, PKCS#7 ile tam 16 baytlık bloğa tamamlar. Uzunluk farkı tasarım gereğidir, bir hata değildir.
Başka bir yerde şifrelenmiş bir şeyi çözebilir miyim? Evet; tam modu, anahtarı, IV'yi (ve GCM için etiketi) biliyorsanız. Bu sayfanın çıktı satırları hepsini tam olarak kaydeder, böylece parametreleri araçlar arasında taşıyabilirsiniz — yukarıdaki OpenSSL kutusu eşleşen komut satırlarını gösterir.