I hope that you're not using this for any sort of secure operation (i.e. if a client can send back the correct key, they are trusted). The reason is that you are not relying on anything that only the client would know, only the algorithm (which, incidentally you just posted on the internet). This is intrisically weak. If you are looking for something more robust, check out