Add Application configuration #11
							
								
								
									
										28
									
								
								Security/Services/GeneratorKey.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								Security/Services/GeneratorKey.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| using System; | ||||
| using System.Buffers.Text; | ||||
| using System.Text; | ||||
|  | ||||
| namespace Mirea.Api.Security.Services; | ||||
|  | ||||
| public static class GeneratorKey | ||||
| { | ||||
|     public static ReadOnlySpan<byte> GenerateBytes(int size) | ||||
|     { | ||||
|         var key = new byte[size]; | ||||
|         using var rng = System.Security.Cryptography.RandomNumberGenerator.Create(); | ||||
|         rng.GetNonZeroBytes(key); | ||||
|         return key; | ||||
|     } | ||||
|  | ||||
|     public static string GenerateBase64(int size) => | ||||
|         Convert.ToBase64String(GenerateBytes(size)); | ||||
|  | ||||
|     public static string GenerateString(int size) | ||||
|     { | ||||
|         var randomBytes = GenerateBytes(size); | ||||
|         Span<byte> utf8Bytes = new byte[Base64.GetMaxEncodedToUtf8Length(randomBytes.Length)]; | ||||
|  | ||||
|         Base64.EncodeToUtf8(randomBytes, utf8Bytes, out _, out _); | ||||
|         return Encoding.UTF8.GetString(utf8Bytes); | ||||
|     } | ||||
| } | ||||
| @@ -1,6 +1,5 @@ | ||||
| using Konscious.Security.Cryptography; | ||||
| using System; | ||||
| using System.Buffers.Text; | ||||
| using System.Text; | ||||
|  | ||||
| namespace Mirea.Api.Security.Services; | ||||
| @@ -41,29 +40,9 @@ public class PasswordHashService | ||||
|         return result == 0; | ||||
|     } | ||||
|  | ||||
|     public static ReadOnlySpan<byte> GenerateRandomKeyBytes(int size) | ||||
|     { | ||||
|         var key = new byte[size]; | ||||
|         using var rng = System.Security.Cryptography.RandomNumberGenerator.Create(); | ||||
|         rng.GetNonZeroBytes(key); | ||||
|         return key; | ||||
|     } | ||||
|  | ||||
|     public static string GenerateRandomKeyStringBase64(int size) => | ||||
|         Convert.ToBase64String(GenerateRandomKeyBytes(size)); | ||||
|  | ||||
|     public static string GenerateRandomKeyString(int size) | ||||
|     { | ||||
|         var randomBytes = GenerateRandomKeyBytes(size); | ||||
|         Span<byte> utf8Bytes = new byte[Base64.GetMaxEncodedToUtf8Length(randomBytes.Length)]; | ||||
|  | ||||
|         Base64.EncodeToUtf8(randomBytes, utf8Bytes, out _, out _); | ||||
|         return Encoding.UTF8.GetString(utf8Bytes); | ||||
|     } | ||||
|  | ||||
|     public (string Salt, string Hash) HashPassword(string password) | ||||
|     { | ||||
|         var salt = GenerateRandomKeyBytes(SaltSize); | ||||
|         var salt = GeneratorKey.GenerateBytes(SaltSize); | ||||
|         var hash = HashPassword(password, salt); | ||||
|  | ||||
|         return (Convert.ToBase64String(salt), Convert.ToBase64String(hash)); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user