Init Commit

This commit is contained in:
2026-01-29 13:43:44 -03:00
commit b9aa8478db
126 changed files with 20649 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
using System.Security.Cryptography;
using System.Text;
using BC = BCrypt.Net.BCrypt;
using MotoresArgentinosV2.Core.Interfaces;
namespace MotoresArgentinosV2.Infrastructure.Services;
public class PasswordService : IPasswordService
{
public string HashPassword(string password)
{
return BC.HashPassword(password);
}
public bool VerifyPassword(string password, string hash, string? salt, bool isLegacy)
{
if (isLegacy)
{
return VerifyLegacyHash(password, hash, salt);
}
return BC.Verify(password, hash);
}
private bool VerifyLegacyHash(string password, string storedHash, string? salt)
{
// Lógica típica de ASP.NET Membership Provider (SHA1)
// El formato común es Base64(SHA1(Salt + Password))
if (string.IsNullOrEmpty(salt)) return false;
byte[] passwordBytes = Encoding.Unicode.GetBytes(password);
byte[] saltBytes = Convert.FromBase64String(salt);
byte[] allBytes = new byte[saltBytes.Length + passwordBytes.Length];
Buffer.BlockCopy(saltBytes, 0, allBytes, 0, saltBytes.Length);
Buffer.BlockCopy(passwordBytes, 0, allBytes, saltBytes.Length, passwordBytes.Length);
using (var sha1 = SHA1.Create())
{
byte[] hashBytes = sha1.ComputeHash(allBytes);
string computedHash = Convert.ToBase64String(hashBytes);
return computedHash == storedHash;
}
}
}