I would like to know if splitting a key generated by PBKDF2 to derive two keys is a safe practice. Concretely, in my system, I need to derive two keys. One for symmetric cipher used in the client side, and one for authenticating the user by sending to the server. The first key is never sent to the server so that only the client knows how to decrypt ciphertexts. 1. User enters email and password; 2. Derive `k <- pbkdf2(password: password, salt: email, alg: 'sha256', iteration: 10000, dkLen: 512)`; 3. Split `k` into `(k0, k1) = (k[0:255], k[256:512])`. Use `k0` as client side key and send `k1` to the server. My idea is that there is no risk in splitting the key in such manner because the key is a pseudo-random string. Any ideas?