Moral behavior may continue to ride in grooves of socialization or genetics, but moral assertions are fundamentally arbitrary -- always trumped by a two-word response: "Says you."By asserting that the human mind can grasp moral truth, Catholicism also defends the reliability of reason against the superstitions of our time.
And this is important for a very practical reason: because a belief in human rights is also a moral conviction.
An institution accused of superstition is now the world's most steadfast defender of rationality and human rights. It has not always lived up to its own standards, but where would those standards come from without it?
To decode.
I would still recommend publishing a separate public key, however,
and include an encrypted signature in the program. As you say, it can
always be changed and re-encoded.
On the other hand, this might be useful on a server, by
================================encoding a public key and checker on a CD-R and checking all your
programs periodically against the CD-R key. You could encode signatures
in each program and be able to upgrade programs from a central encoding
server without having to write a new cd each time.
Say you have an executable:
1337PROGRAM
Your signature checking routine then does this:
1_3_3_7_P_R_O_G_R_A_M
and computes the hash
deadbabeca
And then sends:
1d3e3a7dPbRaObGeRcAaM
To reverse, we extract the hash (deadbabeca) and the "original" executable.
Then we compute the hash (of 1_3_3_7...) and check if it matches...
In summary, we embedded a checksum, but we removed it before we checked it. Simple, really.