Now I understand you did it for confidentiality :-)
I really would prefer you use a 1-way encryption rather than a signature: this will suppress totally the risk of collision.
In ex.: use a BK algorithm (such as RSA, but preferably simpler!) generate a key pair, delete the private key (so nobody may decrypt), include the public key in the code and use it to encrypt the string or at least the algorithm key, that's it :) You can even have this processing in the Crypt_Base class...

You should avoid a BK algorithm that uses one of our Crypt_xxx class for evident stack reasons !

My 2 cents ;-)