🔐 crypto - Kriptografi
Hash, AES, RSA, SHA, HMAC, Digital Signatures
48
Fonksiyon
950
Satır
28 KB
Boyut
🚀 Hızlı Başlangıç
içe_aktar crypto
// Hash fonksiyonları
değişken veri = "Merhaba BERK"
değişken md5 = crypto.md5(veri)
değişken sha256 = crypto.sha256(veri)
değişken sha512 = crypto.sha512(veri)
// HMAC (keyed hash)
değişken anahtar = "secret_key"
değişken hmac = crypto.hmac_sha256(veri, anahtar)
// AES şifreleme (simetrik)
değişken aes_key = crypto.aes_key_generate(256)
değişken şifreli = crypto.aes_encrypt(veri, aes_key)
değişken çözülmüş = crypto.aes_decrypt(şifreli, aes_key)
// RSA şifreleme (asimetrik)
değişken (public_key, private_key) = crypto.rsa_keypair_generate(2048)
değişken encrypted = crypto.rsa_encrypt(veri, public_key)
değişken decrypted = crypto.rsa_decrypt(encrypted, private_key)
// Digital signature
değişken imza = crypto.rsa_sign(veri, private_key)
değişken geçerli = crypto.rsa_verify(veri, imza, public_key)
// Random bytes (güvenli)
değişken random = crypto.random_bytes(32)
📚 Kriptografi Algoritmaları
- Hash: MD5, SHA-1, SHA-256, SHA-512, SHA-3, BLAKE2
- Simetrik: AES-128/192/256 (CBC, GCM), ChaCha20
- Asimetrik: RSA-2048/4096, ECC (secp256k1, ed25519)
- HMAC: HMAC-SHA256, HMAC-SHA512
- Key Derivation: PBKDF2, Argon2, scrypt
- Random: CSPRNG (cryptographically secure)
💡 Örnekler
Password Hashing (Argon2)
içe_aktar crypto
fonksiyon şifre_hash(şifre: yazı) -> yazı yap
// Argon2id (memory-hard, GPU resistant)
değişken salt = crypto.random_bytes(16)
değişken hash = crypto.argon2id(şifre, salt, yap
zaman_maliyeti: 3,
bellek_maliyeti: 65536, // 64 MB
parallellik: 4
son)
// Salt + hash'i birleştir
dön crypto.encode_base64(salt) + "$" + crypto.encode_base64(hash)
son
fonksiyon şifre_doğrula(şifre: yazı, hash: yazı) -> bool yap
değişken parçalar = hash.böl("$")
değişken salt = crypto.decode_base64(parçalar[0])
değişken beklenen = crypto.decode_base64(parçalar[1])
değişken hesaplanan = crypto.argon2id(şifre, salt, yap
zaman_maliyeti: 3,
bellek_maliyeti: 65536,
parallellik: 4
son)
dön crypto.constant_time_compare(hesaplanan, beklenen)
son
// Kullanım
değişken hash = şifre_hash("güçlü_şifre_123")
yazdır("Hash: " + hash)
değişken geçerli = şifre_doğrula("güçlü_şifre_123", hash)
yazdır("Doğrulama: " + geçerli.yazıya()) // true
Secure Message Exchange (RSA + AES Hybrid)
içe_aktar crypto, json
fonksiyon şifreli_mesaj_gönder(mesaj: yazı, alıcı_public_key: RSAPublicKey) -> yazı yap
// 1. Random AES anahtarı oluştur
değişken aes_key = crypto.aes_key_generate(256)
// 2. Mesajı AES ile şifrele (hızlı)
değişken şifreli_mesaj = crypto.aes_gcm_encrypt(mesaj, aes_key)
// 3. AES anahtarını RSA ile şifrele (güvenli)
değişken şifreli_key = crypto.rsa_encrypt(aes_key, alıcı_public_key)
// 4. Paket oluştur
değişken paket = yap
"encrypted_message": crypto.encode_base64(şifreli_mesaj),
"encrypted_key": crypto.encode_base64(şifreli_key)
son
dön json.stringify(paket)
son
fonksiyon şifreli_mesaj_al(paket_json: yazı, private_key: RSAPrivateKey) -> yazı yap
// 1. Paketi parse et
değişken paket = json.parse(paket_json)
değişken şifreli_mesaj = crypto.decode_base64(paket["encrypted_message"])
değişken şifreli_key = crypto.decode_base64(paket["encrypted_key"])
// 2. AES anahtarını çöz
değişken aes_key = crypto.rsa_decrypt(şifreli_key, private_key)
// 3. Mesajı çöz
değişken mesaj = crypto.aes_gcm_decrypt(şifreli_mesaj, aes_key)
dön mesaj
son
// Kullanım
değişken (alice_pub, alice_priv) = crypto.rsa_keypair_generate(2048)
değişken (bob_pub, bob_priv) = crypto.rsa_keypair_generate(2048)
// Alice -> Bob
değişken paket = şifreli_mesaj_gönder("Gizli mesaj!", bob_pub)
değişken mesaj = şifreli_mesaj_al(paket, bob_priv)
yazdır(mesaj) // "Gizli mesaj!"