From 626775e9b8d89304e54108b521c0f6402b98f4bd Mon Sep 17 00:00:00 2001 From: Raphael Anyanwu Date: Tue, 11 Apr 2023 00:05:58 +0100 Subject: [PATCH 01/10] Modifiy parameters name --- Encrypt/AesEncryption/Encrypt.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Encrypt/AesEncryption/Encrypt.cs b/Encrypt/AesEncryption/Encrypt.cs index ad7db94..5cdcaed 100644 --- a/Encrypt/AesEncryption/Encrypt.cs +++ b/Encrypt/AesEncryption/Encrypt.cs @@ -63,13 +63,13 @@ public string AesEncryptByteToString(byte[] data, byte[] secretKey, byte[] iv) private void NullChecks(string data, string secretKey, string iv) { if (data == null || data.Length <= 0) - throw new ArgumentNullException("plainText"); + throw new ArgumentNullException(nameof(data)); if (secretKey == null || secretKey.Length <= 0) - throw new ArgumentNullException("Key"); + throw new ArgumentNullException(nameof(secretKey)); if (iv == null || iv.Length <= 0) - throw new ArgumentNullException("IV"); + throw new ArgumentNullException(nameof(iv)); } private void NullChecks(string data, string secretKey) From dd866676a499c655c0f2ffceda97d1dabf5a03d1 Mon Sep 17 00:00:00 2001 From: Raphael Anyanwu Date: Tue, 11 Apr 2023 00:07:38 +0100 Subject: [PATCH 02/10] Modify parameter name --- Encrypt/AesEncryption/Encrypt.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Encrypt/AesEncryption/Encrypt.cs b/Encrypt/AesEncryption/Encrypt.cs index 5cdcaed..28797f3 100644 --- a/Encrypt/AesEncryption/Encrypt.cs +++ b/Encrypt/AesEncryption/Encrypt.cs @@ -75,10 +75,10 @@ private void NullChecks(string data, string secretKey, string iv) private void NullChecks(string data, string secretKey) { if (data == null || data.Length <= 0) - throw new ArgumentNullException("plainText"); + throw new ArgumentNullException(nameof(data)); if (secretKey == null || secretKey.Length <= 0) - throw new ArgumentNullException("Key"); + throw new ArgumentNullException(nameof(secretKey)); } //public byte[] AesEncrypt(byte[] data, byte[] key, byte[] iv, ReturnType returnType) From fcb9c4cb48915c4ef16d59903bc891267712f7dc Mon Sep 17 00:00:00 2001 From: Raphael Anyanwu Date: Tue, 11 Apr 2023 19:48:04 +0100 Subject: [PATCH 03/10] Add comment fot new method --- Encrypt/AesEncryption/Encrypt.cs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Encrypt/AesEncryption/Encrypt.cs b/Encrypt/AesEncryption/Encrypt.cs index 28797f3..5377833 100644 --- a/Encrypt/AesEncryption/Encrypt.cs +++ b/Encrypt/AesEncryption/Encrypt.cs @@ -60,6 +60,12 @@ public string AesEncryptByteToString(byte[] data, byte[] secretKey, byte[] iv) return cipherText.BytesToString(); } + // needs methods that would accept aes mode + //public byte[] AesEncrypt(byte[] data, byte[] key, byte[] iv, ReturnType returnType) + //{ + + //} + private void NullChecks(string data, string secretKey, string iv) { if (data == null || data.Length <= 0) @@ -79,12 +85,7 @@ private void NullChecks(string data, string secretKey) if (secretKey == null || secretKey.Length <= 0) throw new ArgumentNullException(nameof(secretKey)); - } - - //public byte[] AesEncrypt(byte[] data, byte[] key, byte[] iv, ReturnType returnType) - //{ - - //} + } } public class AesData From d6bc38cdfffdbf919870f14ce5b659435e8485c9 Mon Sep 17 00:00:00 2001 From: Raphael Anyanwu Date: Wed, 12 Apr 2023 22:28:50 +0100 Subject: [PATCH 04/10] Renamed Encrypt.cs to AesEncryption.cs --- Encrypt/AesEncryption/{Encrypt.cs => AesEncryption.cs} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Encrypt/AesEncryption/{Encrypt.cs => AesEncryption.cs} (98%) diff --git a/Encrypt/AesEncryption/Encrypt.cs b/Encrypt/AesEncryption/AesEncryption.cs similarity index 98% rename from Encrypt/AesEncryption/Encrypt.cs rename to Encrypt/AesEncryption/AesEncryption.cs index 5377833..4a072c3 100644 --- a/Encrypt/AesEncryption/Encrypt.cs +++ b/Encrypt/AesEncryption/AesEncryption.cs @@ -4,7 +4,7 @@ namespace SafeCrypt { - public class Encrypt : BaseAesEncryption + public class AesEncryption : BaseAesEncryption { public byte[] AesEncrypt(byte[] data, byte[] secretKey, byte[] iv) => EncryptAES(data, secretKey, iv); From fe91dda374789df2267ac2b3da565cc7ad82b5f8 Mon Sep 17 00:00:00 2001 From: Raphael Anyanwu Date: Wed, 12 Apr 2023 22:30:23 +0100 Subject: [PATCH 05/10] Renamed data --- Encrypt/AesEncryption/AesEncryption.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Encrypt/AesEncryption/AesEncryption.cs b/Encrypt/AesEncryption/AesEncryption.cs index 4a072c3..f3ecc1e 100644 --- a/Encrypt/AesEncryption/AesEncryption.cs +++ b/Encrypt/AesEncryption/AesEncryption.cs @@ -20,7 +20,7 @@ public byte[] AesEncrypt(string data, string secretKey, string iv) return EncryptAES(aesData, aesKey, aesIv); } - public AesData AesEncrypt(string data, string secretKey) + public AesEncryptionData AesEncrypt(string data, string secretKey) { NullChecks(data, secretKey); @@ -30,7 +30,7 @@ public AesData AesEncrypt(string data, string secretKey) var response = EncryptAES(aesData, aesKey, aesIv); - var responseData = new AesData + var responseData = new AesEncryptionData { Data = response, Iv = aesIv @@ -88,7 +88,7 @@ private void NullChecks(string data, string secretKey) } } - public class AesData + public class AesEncryptionData { public byte[] Data { get; set; } public byte[] Iv { get; set; } From d68b2054d58dffac8189f89e4a84c13920edfc8d Mon Sep 17 00:00:00 2001 From: Raphael Anyanwu Date: Sat, 15 Apr 2023 23:05:02 +0100 Subject: [PATCH 06/10] Add decrypt method --- Encrypt/AesEncryption/BaseAesEncryption.cs | 30 +++++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/Encrypt/AesEncryption/BaseAesEncryption.cs b/Encrypt/AesEncryption/BaseAesEncryption.cs index b1919d2..987bb98 100644 --- a/Encrypt/AesEncryption/BaseAesEncryption.cs +++ b/Encrypt/AesEncryption/BaseAesEncryption.cs @@ -34,10 +34,32 @@ public virtual byte[] EncryptAES(byte[] data, byte[] key, byte[] iv) } } - // Method to generate a random byte array of given length - // Used to get the IV - // Generate a random 16-byte IV for AES in CBC mode - public static byte[] GenerateRandomBytes(int length) + // Method to decrypt data using AES algorithm + public static byte[] DecryptAES(byte[] encryptedData, byte[] key, byte[] iv) + { + using (Aes aes = Aes.Create()) + { + aes.Key = key; + aes.IV = iv; + ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV); + using (MemoryStream memoryStream = new MemoryStream(encryptedData)) + { + using (CryptoStream cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read)) + { + using (MemoryStream decryptedStream = new MemoryStream()) + { + cryptoStream.CopyTo(decryptedStream); + return decryptedStream.ToArray(); + } + } + } + } + } + + // Method to generate a random byte array of given length + // Used to get the IV + // Generate a random 16-byte IV for AES in CBC mode + public static byte[] GenerateRandomBytes(int length) { byte[] randomBytes = new byte[length]; using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider()) From 469aaaf69904831043eb62046997430a273dbab4 Mon Sep 17 00:00:00 2001 From: Raphael Anyanwu Date: Sat, 15 Apr 2023 23:06:28 +0100 Subject: [PATCH 07/10] Add aes decrypt method with byte param --- Encrypt/AesEncryption/AesEncryption.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Encrypt/AesEncryption/AesEncryption.cs b/Encrypt/AesEncryption/AesEncryption.cs index f3ecc1e..91d1323 100644 --- a/Encrypt/AesEncryption/AesEncryption.cs +++ b/Encrypt/AesEncryption/AesEncryption.cs @@ -9,6 +9,9 @@ public class AesEncryption : BaseAesEncryption public byte[] AesEncrypt(byte[] data, byte[] secretKey, byte[] iv) => EncryptAES(data, secretKey, iv); + public byte[] AesDecrypt(byte[] data, byte[] secretKey, byte[] iv) + => DecryptAES(data, secretKey, iv); + public byte[] AesEncrypt(string data, string secretKey, string iv) { NullChecks(data, secretKey, iv); From bfd88a117dbf40a69c3553f0c3c15606df0d73c8 Mon Sep 17 00:00:00 2001 From: Raphael Anyanwu Date: Sat, 15 Apr 2023 23:21:34 +0100 Subject: [PATCH 08/10] Add CovertKeys method --- Encrypt/AesEncryption/AesEncryption.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Encrypt/AesEncryption/AesEncryption.cs b/Encrypt/AesEncryption/AesEncryption.cs index 91d1323..7939c30 100644 --- a/Encrypt/AesEncryption/AesEncryption.cs +++ b/Encrypt/AesEncryption/AesEncryption.cs @@ -81,6 +81,13 @@ private void NullChecks(string data, string secretKey, string iv) throw new ArgumentNullException(nameof(iv)); } + private (byte[], byte[]) ConvertKeysToBytes(string secretKey, string ivKey) + { + var secret = Encoding.UTF8.GetBytes(secretKey); + var iv = Encoding.UTF8.GetBytes(ivKey); + + return (secret, iv); + } private void NullChecks(string data, string secretKey) { if (data == null || data.Length <= 0) From bc41ff67682b91dd9037a7e7e28462bf4f1bb2fa Mon Sep 17 00:00:00 2001 From: Raphael Anyanwu Date: Sat, 15 Apr 2023 23:24:11 +0100 Subject: [PATCH 09/10] Refactored method to use convertted keys method --- Encrypt/AesEncryption/AesEncryption.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Encrypt/AesEncryption/AesEncryption.cs b/Encrypt/AesEncryption/AesEncryption.cs index 7939c30..603d8db 100644 --- a/Encrypt/AesEncryption/AesEncryption.cs +++ b/Encrypt/AesEncryption/AesEncryption.cs @@ -14,10 +14,13 @@ public byte[] AesDecrypt(byte[] data, byte[] secretKey, byte[] iv) public byte[] AesEncrypt(string data, string secretKey, string iv) { - NullChecks(data, secretKey, iv); + NullChecks(data, secretKey, iv); + + var convertedKeys = ConvertKeysToBytes(secretKey, iv); + + var aesKey = convertedKeys.Item1; + var aesIv = convertedKeys.Item2; - var aesKey = Encoding.UTF8.GetBytes(secretKey); - var aesIv = Encoding.UTF8.GetBytes(iv); var aesData = data.HexadecimalStringToByteArray(); return EncryptAES(aesData, aesKey, aesIv); From 6bd00283dbc9b0500b894a2bfaa8731df80713e1 Mon Sep 17 00:00:00 2001 From: Raphael Anyanwu Date: Sat, 15 Apr 2023 23:24:38 +0100 Subject: [PATCH 10/10] updated method --- Encrypt/AesEncryption/AesEncryption.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Encrypt/AesEncryption/AesEncryption.cs b/Encrypt/AesEncryption/AesEncryption.cs index 603d8db..d4c017c 100644 --- a/Encrypt/AesEncryption/AesEncryption.cs +++ b/Encrypt/AesEncryption/AesEncryption.cs @@ -14,15 +14,13 @@ public byte[] AesDecrypt(byte[] data, byte[] secretKey, byte[] iv) public byte[] AesEncrypt(string data, string secretKey, string iv) { - NullChecks(data, secretKey, iv); - + NullChecks(data, secretKey, iv); var convertedKeys = ConvertKeysToBytes(secretKey, iv); var aesKey = convertedKeys.Item1; var aesIv = convertedKeys.Item2; var aesData = data.HexadecimalStringToByteArray(); - return EncryptAES(aesData, aesKey, aesIv); }