I am integrating with 3rd party software that uses AES 128 encryption. I know this is not ideal, but the choice of encryption is up to the 3rd party software. I am using C#.
My problem is in deriving the key from the password. The third party has told me that the key is generated using the CryptoAPI's CryptDeriveKey. I have tried both the PasswordDeriveBytes and the RFC2898DeriveBytes implementations of this in .NET, but it seems like neither one supports AES key generation anymore.
I have tried to implement PBKDF1 myself, but it doesn't match the hash that the third party has given me.
The third party has given me a tool to check my encryption, and they say that the password "my_key" should hash to "13606B772B52B5F83BE4FF04572EB8" which unfortunately seems to have a byte cut off in their ui.
So, finally, I was wondering if anyone knew how to implement PBKDF1 by hand in C#, using a SHA1 hash, where the key "my_key" would hash to "13606B772B52B5F83BE4FF04572EB8XX".
Juding by their documentation, the CryptDeriveKey IV is 0 and there is no salt.