From 0bd526d30a6ce6a6f9dfce99f92b091ca1935cee Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Thu, 5 Oct 2023 11:22:09 +0200 Subject: [PATCH] update Pilz.cryptography to net6.0 --- Pilz.Cryptography/Helpers.cs | 55 ++++++++++++++++++++++ Pilz.Cryptography/Pilz.Cryptography.csproj | 4 +- Pilz.Cryptography/SimpleStringCrypter.cs | 6 +-- Pilz.Cryptography/UniquieID.cs | 41 +--------------- 4 files changed, 62 insertions(+), 44 deletions(-) create mode 100644 Pilz.Cryptography/Helpers.cs diff --git a/Pilz.Cryptography/Helpers.cs b/Pilz.Cryptography/Helpers.cs new file mode 100644 index 0000000..55eeb26 --- /dev/null +++ b/Pilz.Cryptography/Helpers.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Management; +using System.Runtime.InteropServices; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; + +namespace Pilz.Cryptography +{ + [EditorBrowsable(EditorBrowsableState.Never)] + public static class Helpers + { + private static string clientSecret = null; + + public static string CalculateClientSecret() + { + // Try getting serial number of C drive + if (clientSecret == null && RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + ManagementObjectSearcher searcher = new("SELECT * FROM Win32_PhysicalMedia"); + string sn = null; + + foreach (var entry in searcher.Get()) + { + if (entry is ManagementObject wmi_HD && string.IsNullOrEmpty(sn) && wmi_HD["SerialNumber"] != null) + sn = wmi_HD["SerialNumber"].ToString()?.Trim(); + } + + clientSecret = sn; + } + + // Fallback to Mashine name + clientSecret ??= Environment.MachineName; + + return clientSecret; + } + + public static string GenerateUniquieID(string var) + { + var sn = CalculateClientSecret(); + var dateTime = DateTime.UtcNow.ToString("yyyyMMddHHmmssfffffff"); + var type = typeof(T).ToString(); + var together = sn + dateTime + type + var; + + var md5 = MD5.Create(); + var hash = BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(together))).Replace("-", string.Empty); + md5.Dispose(); + + return hash; + } + } +} diff --git a/Pilz.Cryptography/Pilz.Cryptography.csproj b/Pilz.Cryptography/Pilz.Cryptography.csproj index c467cf8..cb4ef53 100644 --- a/Pilz.Cryptography/Pilz.Cryptography.csproj +++ b/Pilz.Cryptography/Pilz.Cryptography.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + net6.0 Pilz.Cryptography Pilz.Cryptography Copyright © 2020 @@ -8,7 +8,7 @@ True 1.yyyy.Mdd.Hmm - 1.2023.918.846 + 1.2023.1005.1121 diff --git a/Pilz.Cryptography/SimpleStringCrypter.cs b/Pilz.Cryptography/SimpleStringCrypter.cs index 97a2da9..1a74db6 100644 --- a/Pilz.Cryptography/SimpleStringCrypter.cs +++ b/Pilz.Cryptography/SimpleStringCrypter.cs @@ -10,7 +10,7 @@ namespace Pilz.Cryptography { public class SimpleStringCrypter : ICrypter { - private TripleDESCryptoServiceProvider TripleDes; + private TripleDES TripleDes; public Encoding TextEncoding { get; private set; } = Encoding.Default; public SimpleStringCrypter() : this(string.Empty) @@ -24,14 +24,14 @@ namespace Pilz.Cryptography public SimpleStringCrypter(string key, Encoding textEncoding) { TextEncoding = textEncoding; - TripleDes = new TripleDESCryptoServiceProvider(); + TripleDes = TripleDES.Create(); TripleDes.Key = TruncateHash(key,TripleDes.KeySize / 8); TripleDes.IV = TruncateHash(string.Empty, TripleDes.BlockSize / 8); } private byte[] TruncateHash(string key, int length) { - SHA1CryptoServiceProvider sha1CryptoServiceProvider = new SHA1CryptoServiceProvider(); + SHA1 sha1CryptoServiceProvider = SHA1.Create(); byte[] bytes = TextEncoding.GetBytes(key); byte[] array = sha1CryptoServiceProvider.ComputeHash(bytes); diff --git a/Pilz.Cryptography/UniquieID.cs b/Pilz.Cryptography/UniquieID.cs index e493013..6cbb0c7 100644 --- a/Pilz.Cryptography/UniquieID.cs +++ b/Pilz.Cryptography/UniquieID.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Management; +using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Text; @@ -75,7 +76,7 @@ namespace Pilz.Cryptography protected virtual string GenerateDefault() { - return GenerateUniquieID(currentSimpleID++.ToString()); + return Helpers.GenerateUniquieID(currentSimpleID++.ToString()); } public virtual void GenerateIfNull() @@ -124,44 +125,6 @@ namespace Pilz.Cryptography return base.Equals(obj); } - #region Statics for Generation - - protected static string GenerateUniquieID(string var) - { - var sn = TryGetSerialNumberOfFirstHardDrive(); - var dateTime = DateTime.UtcNow.ToString("yyyyMMddHHmmssfffffff"); - var type = typeof(T).ToString(); - var together = sn + dateTime + type + var; - - var md5 = MD5.Create(); - var hash = BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(together))).Replace("-", string.Empty); - md5.Dispose(); - - return hash; - } - - private static string Win32_PhysicalMedia_SerialNumber = null; - private static string TryGetSerialNumberOfFirstHardDrive() - { - if (Win32_PhysicalMedia_SerialNumber == null) - { - var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia"); - var sn = string.Empty; - - foreach (ManagementObject wmi_HD in searcher.Get()) - { - if (string.IsNullOrEmpty(sn) && wmi_HD["SerialNumber"] != null) - sn = wmi_HD["SerialNumber"].ToString().Trim(); - } - - Win32_PhysicalMedia_SerialNumber = sn; - } - - return Win32_PhysicalMedia_SerialNumber; - } - - #endregion - public static implicit operator string(UniquieID id) => id.ID; public static implicit operator UniquieID(string id) => new UniquieID() { ID = id }; public static implicit operator UniquieID(int id) => new UniquieID() { ID = Convert.ToString(id) };