Knocks/BackEnd/Knoks.Framework/Cryptography/PasswordResult.cs

47 lines
1.4 KiB
C#

using System;
using System.Linq;
namespace Knoks.Framework.Cryptography
{
public class PasswordResult : IPasswordResult
{
public string Version { get; private set; }
public byte[] Password { get; private set; }
public byte[] Salt { get; private set; }
public PasswordResult(string version, byte[] password, byte[] salt)
{
Version = version;
Password = password;
Salt = salt;
}
public PasswordResult(string flatString)
{
try
{
var strArr = flatString.Split('|');
Version = strArr[0];
Password = Convert.FromBase64String(strArr[1]);
Salt = Convert.FromBase64String(strArr[2]);
}
catch (Exception ex)
{
throw new InvalidOperationException("Invalid object creation from flat string.", ex);
}
}
public string ToFlatString()
{
return string.Format("{0}|{1}|{2}", Version, Convert.ToBase64String(Password), Convert.ToBase64String(Salt));
}
public bool IsIdentical(IPasswordResult other)
{
return string.Equals(Version, other.Version, StringComparison.OrdinalIgnoreCase) &&
Password.SequenceEqual(other.Password) &&
Salt.SequenceEqual(other.Salt);
}
}
}