🔐 crypto - Cryptography

Hash, AES, RSA, SHA, HMAC, Digital Signatures

48
Functions
950
Lines
28 KB
Size

🚀 Quick Start

içe_aktar crypto

// Hash functions
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 encryption (symmetric)
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 encryption (asymmetric)
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 (secure)
değişken random = crypto.random_bytes(32)

📚 Cryptography Algorithms

💡 Examples

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)
    
    // Combine salt + hash
    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

// Usage
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. Generate random AES key
    değişken aes_key = crypto.aes_key_generate(256)
    
    // 2. Encrypt message with AES (fast)
    değişken şifreli_mesaj = crypto.aes_gcm_encrypt(mesaj, aes_key)
    
    // 3. Encrypt AES key with RSA (secure)
    değişken şifreli_key = crypto.rsa_encrypt(aes_key, alıcı_public_key)
    
    // 4. Create package
    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. Parse package
    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. Decrypt AES key
    değişken aes_key = crypto.rsa_decrypt(şifreli_key, private_key)
    
    // 3. Decrypt message
    değişken mesaj = crypto.aes_gcm_decrypt(şifreli_mesaj, aes_key)
    
    dön mesaj
son

// Usage
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!"

← All Modules