Begin script abstraction

This commit is contained in:
hydrant
2020-02-29 14:50:10 +01:00
parent 447dd2eabc
commit 37f499a446
48 changed files with 2201 additions and 49 deletions

View File

@@ -0,0 +1,40 @@
using Microsoft.AspNetCore.Cryptography.KeyDerivation;
using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text;
namespace ReallifeGamemode.Server.Common
{
public class PasswordHasher
{
public static byte[] GetNewSalt(int length = 256)
{
if ((length % 8) != 0)
{
throw new ArgumentException("Length mus be completely divisble through 8");
}
var salt = new byte[length / 8];
using (var rng = RandomNumberGenerator.Create())
{
rng.GetBytes(salt);
}
return salt;
}
public static string HashPassword(string password, byte[] salt, int length = 512)
{
if ((length % 8) != 0)
{
throw new ArgumentException("Length mus be completely divisble through 8");
}
var hashedPassword = KeyDerivation.Pbkdf2(password, salt, KeyDerivationPrf.HMACSHA512, 50000, length / 8);
return Convert.ToBase64String(hashedPassword);
}
}
}