The keepass password manager uses multiple rounds of AES for its key derivation, as described here. I was somewhat surprised that it wasn't using pbkdf2, bcrypt, or something more common. Essentially, the key derivation is:
key = sha256(password) cipher = AES(random_seed1, ECB) for i in number_of_iterations: key = cipher.encrypt(key) key = sha256(key) key = sha256(random_seed2 + key)
Is there a name for this kdf? Are there other systems that use something similar? I'm mostly interested in general background info on the above approach. Are there any weaknesses in this approach? It seems considerably simpler than pbkdf2 and bcrypt.