No that's not what you should do, the parameters for crypt() require a certain format, otherwise you will not get a BCrypt value and the salt will not be secure. In PHP 5.5 there is a function called password_hash() which solves exactly your problem, for earlier versions there exists a compatibilty pack from the same author, using this function is "future proof".
Activation keys should better not be derrived from other parameters, just generate a random token and send this token to the user. In the database you store only a hash of this token. This system can be used to generate password reset links too. An example implementation of a such tokens you can find here.