La seconda opzione è più sicura.
Il tuo metodo, non fornisce alcuna integrità dei messaggi. Ciò significa che un utente malintenzionato può modificare parti del testo cifrato e alterare ciò a cui si decrittica il testo semplice. Finché non modificano nulla che modificherà la tua firma statica a 32 bit, ti fiderai. L'HMAC sul secondo metodo fornisce l'integrità dei messaggi.
Hashing the Key 8192 volte aggiunge ulteriori passaggi computazionali per qualcuno che provi a bluteforcing la chiave. Supponiamo che un utente sceglierà una password basata sul dizionario. Con il tuo metodo un attaccante deve eseguire SHA256(someguess)
E poi prova a decrittografare. Tuttavia, con la versione polarssl, dovranno calcolare SHA256(SHA256(SHA256...(SHA256(someguess)))
per 8192 volte. Questo rallenterà solo un aggressore, ma potrebbe essere sufficiente (per ora).
Per quello che vale, si prega di utilizzare una biblioteca esistente. La crittografia è dura ed è soggetta a errori sottili.