Cryptographers often seek to make and distribute software that
performs some action, but prevents users from carrying out that same action
without having access to the software. Usually, this goal goes
hand-in-hand with a desire to control the distribution and use
of mass-produced commercial software -- but it sometimes pertains
to other security features of the software.
In general, this goal is impossible to accomplish. If a
determined attacker has access to your software, he inherently has
the ability to determine what the software does. If
there is a key, or an encryption algorithm, buried within the
software (perhaps in obfuscated form), reverse engineering can
always reveal that "secret" key/algorithm. It may well be that it
is not worth an attacker's effort to find your software's
secret, but cryptography never gives software the
ability to perform non-replicatable magic.