using System; using System.Security.Cryptography; using Microsoft.AspNetCore.Cryptography.KeyDerivation; namespace rockfishCore.Util { //Authentication controller public static class Hasher { public static string hash(string Salt, string Password) { //adapted from here: //https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/password-hashing string hashed = Convert.ToBase64String(KeyDerivation.Pbkdf2( password: Password, salt: StringToByteArray(Salt), prf: KeyDerivationPrf.HMACSHA512, iterationCount: 10000, numBytesRequested: 512 / 8)); return hashed; } //https://stackoverflow.com/questions/311165/how-do-you-convert-a-byte-array-to-a-hexadecimal-string-and-vice-versa/24343727#24343727 public static byte[] StringToByteArray(String hex) { int NumberChars = hex.Length; byte[] bytes = new byte[NumberChars / 2]; for (int i = 0; i < NumberChars; i += 2) bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16); return bytes; } }//eoc }//eons