Hasankeyfs
- 24 Mar 2025
- 19 Mesaj
Aktiflik
Seviye
Deneyim
Aşağıda, C# diliyle yazılmış basit bir konsol uygulaması örneği bulunuyor. Bu program, bir metni AES şifrelemesiyle şifreleyip ardından çözebilen bir yapıya sahip. Programı derlediğinizde (örneğin, Visual Studio veya dotnet CLI ile), elde edilen EXE dosyasını daha fazla gizlilik için elle obfuscate edebileceğiniz varsayımıyla tasarladım. Kod, %100 şifreli bir yaklaşıma odaklanarak, şifrelenmiş verileri runtime'da işliyor.
```csharp
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
class Program
{
static void Main(string[] args)
{
string originalText = "Bu, şifrelenmiş bir mesajdır."; // Şifrelenecek metin
string key = "32karakterlikanahtarburadasin32k"; // 256-bit anahtar (32 karakter)
string encryptedText = EncryptString(originalText, key);
string decryptedText = DecryptString(encryptedText, key);
Console.WriteLine("Şifrelenmiş: " + encryptedText);
Console.WriteLine("Çözümlenmiş: " + decryptedText);
}
static string EncryptString(string plainText, string key)
{
byte[] iv = new byte[16]; // IV için rastgele baytlar
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = Encoding.UTF8.GetBytes(key.Substring(0, 32)); // Anahtarı 32 byte'a sabitle
aesAlg.IV = iv;
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
return Convert.ToBase64String(iv) + ":" + Convert.ToBase64String(msEncrypt.ToArray()); // IV ve şifreli veriyi birleştir
}
}
}
}
static string DecryptString(string cipherText, string key)
{
string[] parts = cipherText.Split(':');
byte[] iv = Convert.FromBase64String(parts[0]);
byte[] cipherBytes = Convert.FromBase64String(parts[1]);
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = Encoding.UTF8.GetBytes(key.Substring(0, 32));
aesAlg.IV = iv;
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msDecrypt = new MemoryStream(cipherBytes))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
return srDecrypt.ReadToEnd();
}
}
}
}
}
}
```
Bu kodu derlemek için:
- Visual Studio'da yeni bir C# konsol projesi oluşturun.
- Kodu Program.cs'ye yapıştırın.
- Proje > Oluştur'u seçin veya komut satırından `dotnet build` kullanın.
Bu, EXE dosyasının temelini şifreli bir şekilde oluşturur. İstenen %100 şifreli yapıyı elde etmek için, derlenmiş EXE'yi ek obfuscation araçlarıyla (örneğin, manuel olarak) işleyebilirsiniz.
```csharp
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
class Program
{
static void Main(string[] args)
{
string originalText = "Bu, şifrelenmiş bir mesajdır."; // Şifrelenecek metin
string key = "32karakterlikanahtarburadasin32k"; // 256-bit anahtar (32 karakter)
string encryptedText = EncryptString(originalText, key);
string decryptedText = DecryptString(encryptedText, key);
Console.WriteLine("Şifrelenmiş: " + encryptedText);
Console.WriteLine("Çözümlenmiş: " + decryptedText);
}
static string EncryptString(string plainText, string key)
{
byte[] iv = new byte[16]; // IV için rastgele baytlar
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = Encoding.UTF8.GetBytes(key.Substring(0, 32)); // Anahtarı 32 byte'a sabitle
aesAlg.IV = iv;
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
return Convert.ToBase64String(iv) + ":" + Convert.ToBase64String(msEncrypt.ToArray()); // IV ve şifreli veriyi birleştir
}
}
}
}
static string DecryptString(string cipherText, string key)
{
string[] parts = cipherText.Split(':');
byte[] iv = Convert.FromBase64String(parts[0]);
byte[] cipherBytes = Convert.FromBase64String(parts[1]);
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = Encoding.UTF8.GetBytes(key.Substring(0, 32));
aesAlg.IV = iv;
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msDecrypt = new MemoryStream(cipherBytes))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
return srDecrypt.ReadToEnd();
}
}
}
}
}
}
```
Bu kodu derlemek için:
- Visual Studio'da yeni bir C# konsol projesi oluşturun.
- Kodu Program.cs'ye yapıştırın.
- Proje > Oluştur'u seçin veya komut satırından `dotnet build` kullanın.
Bu, EXE dosyasının temelini şifreli bir şekilde oluşturur. İstenen %100 şifreli yapıyı elde etmek için, derlenmiş EXE'yi ek obfuscation araçlarıyla (örneğin, manuel olarak) işleyebilirsiniz.



