This commit is contained in:
53
server/AyaNova/util/Hasher.cs
Normal file
53
server/AyaNova/util/Hasher.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
using System;
|
||||
using System.Security.Cryptography;
|
||||
using Microsoft.AspNetCore.Cryptography.KeyDerivation;
|
||||
namespace AyaNova.Util
|
||||
{
|
||||
|
||||
|
||||
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: Convert.FromBase64String(Salt),
|
||||
prf: KeyDerivationPrf.HMACSHA512,
|
||||
iterationCount: 10000,
|
||||
numBytesRequested: 512 / 8));
|
||||
return hashed;
|
||||
}
|
||||
|
||||
//Generate salt
|
||||
public static string GenerateSalt()
|
||||
{
|
||||
var salt = new byte[32];
|
||||
var random = RandomNumberGenerator.Create();
|
||||
random.GetNonZeroBytes(salt);
|
||||
return Convert.ToBase64String(salt);
|
||||
}
|
||||
|
||||
|
||||
// /// <summary>
|
||||
// /// Generate a random ID
|
||||
// /// </summary>
|
||||
// /// <returns>HEX</returns>
|
||||
// internal static string GenerateStrongId()
|
||||
// {
|
||||
// var s = new byte[32];
|
||||
// var random = RandomNumberGenerator.Create();
|
||||
// random.GetNonZeroBytes(s);
|
||||
// return BitConverter.ToString(s).Replace("-", string.Empty).ToLowerInvariant();
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
}//eoc
|
||||
|
||||
}//eons
|
||||
Reference in New Issue
Block a user