pbkdf2 has an interesting property when using hmac as its pseudo-random function. it is possible to trivially construct any number of different password pairs with collisions within each pair. if a supplied password is longer than the block size of the underlying hmac hash function, the password is first pre-hashed into a digest, and that digest is instead used as the password. for example, the following password is too long: