Hash
From SA-MP Wiki
hash
Note: This function name starts with a lowercase letter. |
Description:
This function allows you to hash strings, this function can be used to store private information (i.e: passwords)
Important | This is not a native SA-MP function, and there are many more advanced methods of encryption in comparison to this old function. |
(const string[], key[]="", bit=32)
const string[] | The string you want to hash |
key[]="" | The key you want to use for hash (optional) |
bit=32 | The number of bits the hash should be (optional) |
Return Values:
The hashed string
hash("Hash this string"); // returns "NbJU9mSAXSSxfSlbic30TrxmIU4jtyWY" hash("Hash this String"); // returns "U0zRNIbJgbbjjoOvGt2hu06wRdDbTHYJ" hash("Hash this string","Hashkey"); // returns "HrKfk8bZgWMXjVU77XMz4m6rgtqP7KxK" hash("Hash this string","HashKey"); // returns "6DNE1DQJDK1a0gFJfEtqmilBTXWgiSca"
Note: As you can see even very similar strings with the same key have two completely different hashes.
You can also see that two equal strings with almost the same key have two completely different hashes.
That's an evidence of it's safety.
How to use:
1) Save your hashed password
2) On logging in, hash the password and compare it with the saved one
(Advice: You can hash userdatas (username and password) to only one hash by using the password as hash-key)
new hashsaved[]="lL5YPmWSalwr7R9k4QgEBHVpICRCGLzT"; // hash("TestUsername","TestPassword") public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/login ", cmdtext, true, 7) == 0) { new username[MAX_STRING], password[MAX_STRING]; format(username,sizeof(username),left(cmdtext[7],strfind(cmdtext[7]," "))); format(password,sizeof(password),right(cmdtext[7],strfind(cmdtext[7]," "))); if (strcmp(hash(username,password), hashsaved, false) == 0) // if you wrote "/login TestUsername TestPassword" (lettercase will NOT be ignored) { SendClientMessage(playerid, 0xFFFFFFFF, "You're succesfully logged in"); } else { SendClientMessage(playerid, 0xFFFFFFFF, "wrong username or password"); } return 1; } return 0; }
Related Functions
The following functions may be useful, as they are related to this function in one way or another.