Skip to content

Commit de80fe6

Browse files
authored
Merge pull request #50 from selfmadecode/45-convert-aes-algorithms-methods-to-static-methods
feat: Convert AES algorithm methods to static methods
2 parents 7b9506f + eb6bd33 commit de80fe6

5 files changed

Lines changed: 29 additions & 39 deletions

File tree

README.md

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,23 +40,19 @@ To use the AES encryption in your C# application,
4040
instantiate the `AesEncryption` or `AesDecryption` class and call the provided methods. Here's a simple example:
4141

4242
```csharp
43-
using SafeCrypt.AESDecryption;
44-
using SafeCrypt.AESEncryption;
43+
using SafeCrypt.AES;
4544
using SafeCrypt.Models;
4645

4746
class Program
4847
{
4948
static async Task Main()
5049
{
51-
var aesEncryptor = new AesEncryption();
5250

53-
var encryptedData = await aesEncryptor.EncryptToBase64StringAsync("Hello, World!", "gdjdtsraewsuteastwerse=="
51+
var encryptedData = await Aes.EncryptToBase64StringAsync("Hello, World!", "gdjdtsraewsuteastwerse=="
5452

5553
Console.WriteLine($"Encrypted Data: {encryptedData.EncryptedData}");
5654
Console.WriteLine($"Initialization Vector: {encryptedData.Iv}");
57-
58-
var aesDecryptor = new AesDecryption();
59-
55+
6056
var parameterToDecrypt = new DecryptionParameters
6157
{
6258
DataToDecrypt = encryptedData.EncryptedData,
@@ -65,7 +61,7 @@ class Program
6561

6662
};
6763

68-
var data = await aesDecryptor.DecryptFromBase64StringAsync(parameterToDecrypt)
64+
var data = await Aes.DecryptFromBase64StringAsync(parameterToDecrypt)
6965

7066
Console.WriteLine($"Decrypted Data: {data.DecryptedData}");
7167
Console.WriteLine($"Initialization Vector: {data.Iv}");
@@ -75,8 +71,7 @@ class Program
7571

7672
-------------------------------------------------------------------------------------------------------
7773

78-
using SafeCrypt.AESDecryption;
79-
using SafeCrypt.AESEncryption;
74+
using SafeCrypt.AES;
8075
using SafeCrypt.Models;
8176

8277
class Program
@@ -95,9 +90,8 @@ class Program
9590
SecretKey = secret
9691
};
9792

98-
var encryptor = new AesEncryption();
9993

100-
var response = await encryptor.EncryptToBase64StringAsync(encryptionParam.DataToEncrypt, secret);
94+
var response = await Aes.EncryptToBase64StringAsync(encryptionParam.DataToEncrypt, secret);
10195

10296
Console.WriteLine(response.EncryptedData);
10397
Console.WriteLine(response.Iv);
@@ -113,8 +107,7 @@ class Program
113107
};
114108

115109

116-
var decryptor = new AesDecryption();
117-
var decryptionData = await decryptor.DecryptFromBase64StringAsync(decryptorParam);
110+
var decryptionData = await Aes.DecryptFromBase64StringAsync(decryptorParam);
118111

119112
Console.WriteLine(decryptionData.DecryptedData);
120113
Console.WriteLine(decryptionData.Iv);

src/SafeCrypt.Lib/Encryption/AesEncryption/BaseAesEncryption.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
namespace SafeCrypt.AesEncryption
88
{
9-
public class BaseAesEncryption
9+
public static class BaseAesEncryption
1010
{
1111
/// <summary>
1212
/// Encrypts the provided data using the Advanced Encryption Standard (AES) algorithm.

src/SafeCrypt.Lib/Encryption/AesEncryption/Decrypting.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
using System.Security.Cryptography;
66
using System.Threading.Tasks;
77

8-
namespace SafeCrypt.AESDecryption
8+
namespace SafeCrypt.AES
99
{
10-
public class AesDecryption : BaseAesEncryption
10+
public static partial class Aes
1111
{
1212
/// <summary>
1313
/// Asynchronously decrypts data from a hexadecimal string using the specified decryption parameters and cipher mode.
@@ -19,7 +19,7 @@ public class AesDecryption : BaseAesEncryption
1919
/// The task result is a <see cref="DecryptionData"/> object containing the decrypted data, IV, and secret key.
2020
/// If decryption fails, the <see cref="DecryptionData"/> object will contain error information.
2121
/// </returns>
22-
public async Task<DecryptionData> DecryptFromHexStringAsync(DecryptionParameters param, CipherMode mode = CipherMode.CBC)
22+
public static async Task<DecryptionData> DecryptFromHexStringAsync(DecryptionParameters param, CipherMode mode = CipherMode.CBC)
2323
{
2424
var responseData = new DecryptionData();
2525

@@ -55,7 +55,7 @@ public async Task<DecryptionData> DecryptFromHexStringAsync(DecryptionParameters
5555
Data = param.DataToDecrypt.HexadecimalStringToByteArray()
5656
};
5757

58-
var response = await DecryptAsync(byteEncryptionParameters, mode);
58+
var response = await BaseAesEncryption.DecryptAsync(byteEncryptionParameters, mode);
5959

6060
return new DecryptionData
6161
{
@@ -75,7 +75,7 @@ public async Task<DecryptionData> DecryptFromHexStringAsync(DecryptionParameters
7575
/// The task result is a <see cref="DecryptionData"/> object containing the decrypted data, IV, and secret key.
7676
/// If decryption fails, the <see cref="DecryptionData"/> object will contain error information.
7777
/// </returns>
78-
public async Task<DecryptionData> DecryptFromBase64StringAsync(DecryptionParameters param, CipherMode mode = CipherMode.CBC)
78+
public static async Task<DecryptionData> DecryptFromBase64StringAsync(DecryptionParameters param, CipherMode mode = CipherMode.CBC)
7979
{
8080
var responseData = new DecryptionData();
8181

@@ -103,7 +103,7 @@ public async Task<DecryptionData> DecryptFromBase64StringAsync(DecryptionParamet
103103
Data = Convert.FromBase64String(param.DataToDecrypt)
104104
};
105105

106-
var response = await DecryptAsync(byteDecryptionParameters, mode);
106+
var response = await BaseAesEncryption.DecryptAsync(byteDecryptionParameters, mode);
107107

108108
return new DecryptionData
109109
{
@@ -121,7 +121,7 @@ public async Task<DecryptionData> DecryptFromBase64StringAsync(DecryptionParamet
121121
}
122122

123123

124-
private void NullChecks(string data, string secretKey, string iv)
124+
private static void NullChecks(string data, string secretKey, string iv)
125125
{
126126
if (data == null || data.Length <= 0)
127127
throw new ArgumentNullException(nameof(data));
@@ -133,13 +133,13 @@ private void NullChecks(string data, string secretKey, string iv)
133133
throw new ArgumentNullException(nameof(iv));
134134
}
135135

136-
private (byte[], byte[]) ConvertKeysToBytesAndGetKeys(string secretKey, string iv)
136+
private static (byte[], byte[]) ConvertKeysToBytesAndGetKeys(string secretKey, string iv)
137137
{
138138

139139
return (secretKey.ConvertKeysToBytes(), iv.ConvertKeysToBytes());
140140
}
141141

142-
private void AddError(DecryptionData responseData, string error)
142+
private static void AddError(DecryptionData responseData, string error)
143143
{
144144
responseData.HasError = true;
145145
responseData.Errors.Add(error);

src/SafeCrypt.Lib/Encryption/AesEncryption/Encrypting.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
using System.Security.Cryptography;
66
using System.Threading.Tasks;
77

8-
namespace SafeCrypt.AESEncryption
8+
namespace SafeCrypt.AES
99
{
10-
public class AesEncryption : BaseAesEncryption
10+
public static partial class Aes
1111
{
1212
/// <summary>
1313
/// Asynchronously encrypts the provided data using the specified secret key and initialization vector (IV).
@@ -23,7 +23,7 @@ public class AesEncryption : BaseAesEncryption
2323
/// <param name="secretKey">The secret key used for encryption.</param>
2424
/// <param name="iv">The initialization vector used for encryption.</param>
2525
/// <returns>The encrypted data as a byte array.</returns>
26-
public async Task<EncryptionData> EncryptToHexStringAsync(EncryptionParameters param, CipherMode mode = CipherMode.CBC)
26+
public static async Task<EncryptionData> EncryptToHexStringAsync(EncryptionParameters param, CipherMode mode = CipherMode.CBC)
2727
{
2828
var responseData = new EncryptionData();
2929

@@ -52,7 +52,7 @@ public async Task<EncryptionData> EncryptToHexStringAsync(EncryptionParameters p
5252
Data = param.DataToEncrypt.ConvertToHexString().HexadecimalStringToByteArray()
5353
};
5454

55-
var response = await EncryptAsync(byteEncryptionParameters, mode);
55+
var response = await BaseAesEncryption.EncryptAsync(byteEncryptionParameters, mode);
5656

5757
return new EncryptionData
5858
{
@@ -84,7 +84,7 @@ public async Task<EncryptionData> EncryptToHexStringAsync(EncryptionParameters p
8484
/// <exception cref="FormatException">
8585
/// Thrown if the base64secretKey is not a valid Base64-encoded string.
8686
/// </exception>
87-
public async Task<EncryptionData> EncryptToBase64StringAsync(string dataToBeEncrypted, string base64secretKey, CipherMode mode = CipherMode.CBC)
87+
public static async Task<EncryptionData> EncryptToBase64StringAsync(string dataToBeEncrypted, string base64secretKey, CipherMode mode = CipherMode.CBC)
8888
{
8989
// validate is base64
9090
if (!Validators.IsBase64String(base64secretKey))
@@ -104,7 +104,7 @@ public async Task<EncryptionData> EncryptToBase64StringAsync(string dataToBeEncr
104104
Data = dataToBeEncrypted.ConvertToHexString().HexadecimalStringToByteArray()
105105
};
106106

107-
var response = await EncryptAsync(byteEncryptionParameters, mode);
107+
var response = await BaseAesEncryption.EncryptAsync(byteEncryptionParameters, mode);
108108

109109
return new EncryptionData
110110
{
@@ -114,7 +114,7 @@ public async Task<EncryptionData> EncryptToBase64StringAsync(string dataToBeEncr
114114
};
115115
}
116116

117-
private EncryptionData ValidateEncryptionParameters(EncryptionParameters param)
117+
private static EncryptionData ValidateEncryptionParameters(EncryptionParameters param)
118118
{
119119
var responseData = new EncryptionData();
120120

@@ -134,7 +134,7 @@ private EncryptionData ValidateEncryptionParameters(EncryptionParameters param)
134134
return responseData;
135135
}
136136

137-
private void NullChecks(string data, string secretKey)
137+
private static void NullChecks(string data, string secretKey)
138138
{
139139
if (data == null || data.Length <= 0)
140140
throw new ArgumentNullException(nameof(data));
@@ -143,7 +143,7 @@ private void NullChecks(string data, string secretKey)
143143
throw new ArgumentNullException(nameof(secretKey));
144144
}
145145

146-
private void AddError(EncryptionData responseData, string error)
146+
private static void AddError(EncryptionData responseData, string error)
147147
{
148148
responseData.HasError = true;
149149
responseData.Errors.Add(error);

src/SafeCrypt.Test/Program.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
// See https://aka.ms/new-console-template for more information
22

3-
using SafeCrypt.AESDecryption;
4-
using SafeCrypt.AESEncryption;
3+
using SafeCrypt.AES;
54
using SafeCrypt.Models;
65

76
var dataToEncrypt = "Data to Encrypt";
87
var secret = "hghjuytsdfraestwsgtere==";
98

109
// Encryption process
11-
var encryptor = new AesEncryption();
1210
// this method generates a random IV key for the encryption process
1311
// the IV is returned in the response with other properties
14-
var response = await encryptor.EncryptToBase64StringAsync(dataToEncrypt, secret);
12+
var response = await Aes.EncryptToBase64StringAsync(dataToEncrypt, secret);
1513

1614
Console.WriteLine("............Encryption Started............");
1715

@@ -28,8 +26,7 @@
2826
DataToDecrypt = response.EncryptedData
2927
};
3028

31-
var decryptor = new AesDecryption();
32-
var decryptionData = await decryptor.DecryptFromBase64StringAsync(decryptorParam);
29+
var decryptionData = await Aes.DecryptFromBase64StringAsync(decryptorParam);
3330

3431
Console.WriteLine("............Decryption Started............");
3532
Console.WriteLine($"Decrypted data: {decryptionData.DecryptedData}");

0 commit comments

Comments
 (0)