Non dovresti mai memorizzare una password o una maschera di hash (o salt ) direttamente nel tuo codice. Per la ragione che hai già affermato: qualcuno decompilerà il tuo codice alla fonte. Quindi avranno la password.
Un paio di modi semplicissimi
È possibile eseguire la password tramite un algoritmo di hashing unidirezionale e salvare i risultati da qualche parte (magari in un database). Potresti facilmente scrivere questo metodo tu stesso. Potrebbe essere semplice come XORare ogni carattere nella stringa password con una sequenza di caratteri semi-casuali. Potrebbe essere più complesso (ad esempio, Controlli ridondanti ciclici ). Nessuno di questi metodi avrebbe il severo controllo di un decodificatore.
Un metodo più complesso, ma più sicuro
Questo è il punto in cui inizi a entrare in hash crittograficamente sicuri .
A cryptographic hash function is a hash function which is considered practically impossible to invert, that is, to recreate the input data from its hash value alone. These one-way hash functions have been called "the workhorses of modern cryptography".
...
Storing all user passwords as cleartext can result in a massive security breach if the password file is compromised. One way to reduce this danger is to only store the hash digest of each password. To authenticate a user, the password presented by the user is hashed and compared with the stored hash. (Note that this approach prevents the original passwords from being retrieved if forgotten or lost, and they have to be replaced with new ones.) The password is often concatenated with a random, non-secret salt value before the hash function is applied. The salt is stored with the password hash. Because users have different salts, it is not feasible to store tables of precomputed hash values for common passwords.
Qualche aiuto
Per fortuna, Go ha implementato una versione più vicina (non sono esperto di Go) agli hash crittograficamente sicuri in Vai pacchetto Crypto .