dheenaxe's blog

AES Encryption 101

1. Declare Variables

AES key (32 byte), AES IV key (16 byte), AES IV key'in kopyası, encryption çıktısı ve decryption çıktısı için ayrı ayrı pointer variable tanımlanır. Ciphertext ve plaintext için de integer variable tanımlanır. Son olarak da AES padding kullanma ihtimaline karşı BOOL tanımlanır.

2. Random Number Generator

Program her çalıştığında farklı random değerler alması için ilgili komut gerçekleştirilir.

3. Plaintext Hexdump

İşlem öncesi plaintext'in kaç byte olduğu, kaç 16-byte AES bloğu kullandığı ve full hexdump verisi incelenmek üzere çıktı edilir.

4. AES Key & AES IV Key Generation

Bu key'ler encryption için gereklidir.

5. AES IV Duplication

Decryption gerçekleştirilebilmesi için encryption gerçekleşmeden önce AES IV'in kopyalanması gerekmektedir. Bu işlem gerçekleştirilir.

6. AES Key & AES IV Key Hexdump

Key'ler hex dump edilir. Böylece random olup olmadıkları görülür.

7. Encryption

Oluşturulan key'ler ile birlikte AES-CBC encryption gerçekleşir.

8. Ciphertext Hexdump

Encryption'un teyidini almak için yeni ciphertext dump ile gözlemlenir.

9. Decryption

AES-CBC encryption sırasında AES IV aktif olarak kullanıldığı için, decryption esnasında kopyalanmış AES IV key kullanılır. AES key ve değiştirilmemiş AES IV key'in kullanımı ile decryption gerçekleşir.

10. Decrypted-plaintext Hexdump

Decryption'un teyidini almak için plaintext dump ile gözlemlenir.

11. Free Memory

İşlemler için kullanılan memory temizlenir.