Node.js
AES
crypto.createCipheriv ile AES şifreleme öğrenirsin.
AES şifreleme
AES (Advanced Encryption Standard) iki yönlü simetrik şifrelemedir. Aynı anahtar hem şifreleme hem çözme için kullanılır. Node.js'te crypto.createCipheriv(algoritma, anahtar, iv) ile şifreleyici yaratırsın.
Örnek: const cipher = crypto.createCipheriv("aes-256-cbc", key, iv);. Burada key 32 bayt (256 bit), iv 16 bayt (başlangıç vektörü) olmalıdır. iv her şifreleme için farklı olmalıdır; crypto.randomBytes(16) ile üretirsin. Şifreleme: cipher.update("metin", "utf8", "hex") ve cipher.final("hex"). Çözme: crypto.createDecipheriv ile aynı anahtar ve iv kullanılır. AES-CBC modunda şifreli metin blok boyutunun (16 bayt) katıdır; PKCS7 dolgu (padding) uygulanır. Anahtar ve iv birlikte güvenle saklanmalı veya iletilmelidir.
Anahtar ve IV
AES-256-CBC için anahtar 32 bayt, IV 16 bayt olmalıdır. IV her şifreleme için benzersiz olmalıdır; aynı anahtar ve IV ile aynı metin aynı şifreliyi verir. Bu, tekrar oynatma (replay) saldırılarına açık olur.
Örnek: const key = crypto.randomBytes(32); const iv = crypto.randomBytes(16);. Anahtar uzun süre kullanılır; güvenli bir yerde saklanır. IV ise her şifreleme için yeniden üretilir; şifreli metinle birlikte gönderilir (gizli tutulması gerekmez). Çözerken aynı IV gerekir: crypto.createDecipheriv("aes-256-cbc", key, iv). Anahtar bayt dizisi (Buffer) olmalıdır; dize olamaz. randomBytes zaten Buffer döndürür. Yanlış anahtar veya IV ile çözme hatası fırlatır; bu, yanlış veri girildiğinin göstergesidir.
Uygulama Metni AES ile şifrele
const crypto = require("node:crypto"); ile içe aktar. const key = crypto.randomBytes(32); ve const iv = crypto.randomBytes(16); ile anahtar ve IV üret. const cipher = crypto.createCipheriv("aes-256-cbc", key, iv); ile şifreleyici yarat. let enc = cipher.update("gizli", "utf8", "hex"); enc += cipher.final("hex"); ile şifrele. console.log("Şifreli uzunluk: " + enc.length) ile yazdır.
Örnek çözümü göster
const crypto = require("node:crypto");
const key = crypto.randomBytes(32);
const iv = crypto.randomBytes(16);
const cipher = crypto.createCipheriv("aes-256-cbc", key, iv);
let enc = cipher.update("gizli", "utf8", "hex");
enc += cipher.final("hex");
console.log("Şifreli uzunluk: " + enc.length);
Kendini test et
-
createCipheriv çağrısını tamamla
const cipher = crypto.____("aes-256-cbc", key, iv);
Cevabı göster
const cipher = crypto.createCipheriv("aes-256-cbc", key, iv);
-
createCipheriv hangi üç parametreyi alır?
crypto.createCipheriv(alg, key, iv)
- algoritma, metin, anahtar
- algoritma, anahtar, IV
- algoritma, IV, metin
- anahtar, IV, metin
Cevabı göster
algoritma, anahtar, IV — algoritma, anahtar ve IV olmak üzere üç parametre alır.
-
Parçayı rolüne eşle
- createCipheriv
- Şifreleyici yaratır
- key
- 32 bayt anahtar
- iv
- 16 bayt başlangıç vektörü
- update/final
- Şifreli metni üretir
Sıradaki ders: Özet - Crypto