hashtest.pwn 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include <a_samp>
  2. #include <sscanf2>
  3. #include <zcmd>
  4. native WP_Hash(buffer[], len, const str[]);
  5. public OnFilterScriptInit() {}
  6. public OnFilterScriptExit() {}
  7. stock generateRandomSalt() {
  8. new salt[32 + 1];
  9. for(new i; i < 32; i++) {
  10. salt[i] = random(79) + 47;
  11. if(salt[i] == 33 || salt[i] == 34 || salt[i] == 37 || salt[i] == 39 || salt[i] == 92) { //invalid SQL chars
  12. salt[i] = 33; //replace with !
  13. }
  14. }
  15. salt[32] = 0;
  16. return salt;
  17. }
  18. forward HashPassword(password[], playerid);
  19. public HashPassword(password[], playerid) {
  20. new string[130];
  21. new part1[33];
  22. new part2[33];
  23. strmid(part1, password, 0, floatround(strlen(password)/2, floatround_floor));
  24. strmid(part2, password, floatround(strlen(password)/2, floatround_floor), strlen(password));
  25. new salt[32+1];
  26. format(salt, sizeof salt, "%s", generateRandomSalt());
  27. format(string, sizeof(string), "%s%s%s", part1, salt, part2);
  28. WP_Hash(string, sizeof string, string);
  29. return 1;
  30. }
  31. CMD:hash(playerid, params[]) {
  32. new pass[60];
  33. if(sscanf(params, "s[60]", pass)) {
  34. return SendClientMessage(playerid, -1, "You must provide a password");
  35. }
  36. HashPassword(pass, playerid);
  37. return 1;
  38. }