rc-migration-tests/vb-migration/Strata.Base.Internal/Encryptors/UserGUIDEncryptionMethod.cs

52 lines
1.3 KiB
C#

using System;
using System.Configuration;
using System.Security.Cryptography;
using System.Text;
using Strata.Configuration.Client.Models.Jazz;
namespace Strata.Base.Internal.Encryptors
{
public class UserGUIDEncryptionMethod : IPasswordEncryptionMethod
{
#region Declarations
private const int NUMBER_ITERATIONS = 100000;
#endregion
#region Methods
public string Encode(string username, string anOrgPin, string aNewPassword, Guid aUserGUID, string aSalt)
{
string salt = aUserGUID.ToString() + ConfigurationManager.AppSettings[nameof(StrataJazzOptions.UserGuidEncryptionKey)];
string result = GetHashedValue(aNewPassword, salt);
for (int i = 1; i <= NUMBER_ITERATIONS; i++)
result = GetHashedValue(result);
return result;
}
private static string GetHashedValue(string aValue)
{
// Create an instance of the sha encrypter
using (HashAlgorithm hasher = SHA256.Create())
{
return Convert.ToBase64String(hasher.ComputeHash(Encoding.UTF8.GetBytes(aValue)));
}
}
private static string GetHashedValue(string aValue, string aSalt)
{
return GetHashedValue(aValue + aSalt);
}
#endregion
}
}