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 Konscious.Security.Cryptography; | ||||||
| using System; | using System; | ||||||
| using System.Buffers.Text; |  | ||||||
| using System.Text; | using System.Text; | ||||||
|  |  | ||||||
| namespace Mirea.Api.Security.Services; | namespace Mirea.Api.Security.Services; | ||||||
| @@ -41,29 +40,9 @@ public class PasswordHashService | |||||||
|         return result == 0; |         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) |     public (string Salt, string Hash) HashPassword(string password) | ||||||
|     { |     { | ||||||
|         var salt = GenerateRandomKeyBytes(SaltSize); |         var salt = GeneratorKey.GenerateBytes(SaltSize); | ||||||
|         var hash = HashPassword(password, salt); |         var hash = HashPassword(password, salt); | ||||||
|  |  | ||||||
|         return (Convert.ToBase64String(salt), Convert.ToBase64String(hash)); |         return (Convert.ToBase64String(salt), Convert.ToBase64String(hash)); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user