Skip to content

Commit cdf004c

Browse files
authored
Merge pull request #17 from kenllyacosta/patch-2
Update csharp.md
2 parents 8fc33f0 + 161c3a6 commit cdf004c

File tree

1 file changed

+36
-13
lines changed

1 file changed

+36
-13
lines changed

docs/rules/csharp.md

Lines changed: 36 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -521,22 +521,45 @@ public class CryptoUtils
521521
{
522522
public string Encrypt(string data, string key)
523523
{
524-
byte[] dataBytes = System.Text.Encoding.UTF8.GetBytes(data);
525-
byte[] keyBytes = System.Text.Encoding.UTF8.GetBytes(key);
526-
527-
using (AesCryptoServiceProvider aesCryptoProvider = new AesCryptoServiceProvider())
524+
string Result = "";
525+
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
526+
byte[] dataBytes = Encoding.UTF8.GetBytes(data);
527+
528+
using (var aes = Aes.Create())
528529
{
529-
aesCryptoProvider.Key = keyBytes;
530-
aesCryptoProvider.Mode = CipherMode.CBC;
531-
aesCryptoProvider.Padding = PaddingMode.PKCS7;
532-
533-
ICryptoTransform encryptor = aesCryptoProvider.CreateEncryptor();
534-
byte[] encryptedData = encryptor.TransformFinalBlock(dataBytes, 0, dataBytes.Length);
535-
encryptor.Dispose();
536-
aesCryptoProvider.Clear();
530+
aes.Key = keyBytes;
531+
aes.Mode = CipherMode.CBC; //Better security
532+
aes.Padding = PaddingMode.PKCS7;
533+
534+
aes.GenerateIV(); //Generate a random IV (Init Vector) for each encryption
535+
536+
using var encryptor = aes.CreateEncryptor();
537+
Result = Convert.ToBase64String(aes.IV.Concat(encryptor.TransformFinalBlock(dataBytes, 0, dataBytes.Length)).ToArray());
538+
}
539+
540+
return Result;
541+
}
537542

538-
return Convert.ToBase64String(encryptedData);
543+
public string Decrypt(string encryptedData, string key)
544+
{
545+
string Result = "";
546+
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
547+
byte[] encryptedBytesWithIV = Convert.FromBase64String(encryptedData);
548+
549+
using (var aes = Aes.Create())
550+
{
551+
aes.Key = keyBytes;
552+
aes.Mode = CipherMode.CBC; //Better security
553+
aes.Padding = PaddingMode.PKCS7;
554+
555+
//Extract IV from the encrypted data
556+
aes.IV = encryptedBytesWithIV.Take(aes.BlockSize / 8).ToArray(); //Set IV for decryption
557+
byte[] encryptedBytes = encryptedBytesWithIV.Skip(aes.BlockSize / 8).ToArray();
558+
559+
using var decryptor = aes.CreateDecryptor();
560+
Result = Encoding.UTF8.GetString(decryptor.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length));
539561
}
562+
return Result;
540563
}
541564
}
542565
```

0 commit comments

Comments
 (0)