Hasher.gd 615 B

123456789101112131415161718192021
  1. extends Object
  2. class_name Hasher
  3. #
  4. const DefaultSaltSize : int = 16
  5. # Password
  6. static func GenerateSalt(length : int = DefaultSaltSize) -> String:
  7. var rng : RandomNumberGenerator = RandomNumberGenerator.new()
  8. var salt : String = ""
  9. for i in length:
  10. # Printable ASCII characters
  11. salt += char(rng.randi_range(33, 126))
  12. return salt
  13. static func HashPassword(password : String, salt : String) -> String:
  14. var hashContext : HashingContext = HashingContext.new()
  15. hashContext.start(HashingContext.HASH_SHA256)
  16. hashContext.update((salt + password).to_utf8_buffer())
  17. return hashContext.finish().hex_encode()