C# ve Python Entegrasyonu ile Base64 encoder/decoder Yapımı (IronPython)

Kruvazör

Yazılım Ekibi Lideri
28 Mar 2020
1,724
2,541
Wrong Side Of Heaven
Herkese merhaba arkadaşlar ben Kruvazör
Bu projenin Python kısmında bana uzun süredir destek veren @Helmsys'e teşekkür ederim.

Günümüzün modern yazılım geliştirme süreçlerinde çeşitli yazılım dillerinin beraber kullanılması sık sık karşılaştığımız bir olaydır.
Bu sebepten dolayı C# ve Python dillerini birbirine entegre etme konusu hususunda bir çalışma yaptım ve bu yazımda C# ve pythonun uyumlu biçimde çalışmasını mümkün kılan IronPythona bakacağız ve bir proje gerçekleştireceğiz.
IronPython official site

IronPython, Python dilinin ana özelliklerini korurken, C# tarafında entegrasyon sağlar. Bu birleşim, C# ve Python kodlarının bir arada kullanılabilmesini ve birbirleriyle etkileşimde bulunabilmesini mümkün kılar.
Örneğin, C# tarafından çağrılan bir Python modülü veya tersine Python tarafından çağrılan bir C# sınıfı oluşturabilirsiniz.
ya da C# Formda girilen bir veriyi python tarafında işleyebilir ve tam tersi işlem de gerçekleştirebilirsiniz.
hg2ueaq.jpg

IronPython, Dynamic Language Runtime (DLR) üzerine kuruludur. DLR, dinamik olarak yazılmış dillerin daha etkili bir şekilde çalışmasını sağlayan bir iletişim sunar.
IronPython ve genel yapıyı kavradığımıza göre kurulumları yapabilir ve kodlarımızı yazabiliriz.
Öncelikle Visual Studio aracılığıyla bir WinForm projesi açalım.




blxnocx.jpg

Ardından paketleri indirelim.
dnv1c97.jpg

Şimdi Form kodlarımızı yazalım.

1 Label
4 adet textbox
1 adet button

9wuf1uc.jpg

Şimdi python kodlarımızı yazalım.
Python:
import base64

originalString = str(originalString)

print("Orjinal metin: " + originalString)

encodedString = base64.b64encode(originalString.encode()).decode()
print("Şifreli metin: " + encodedString)

decodedString = base64.b64decode(encodedString).decode()
print("Şifresi açık metin: " + decodedString)

encodedString, decodedString

Şimdi de Pythona gönderdiğimiz verileri geri almak adına C# Kodlarımızı yazalım.
Global alanda bu şekilde tanımlama yapalım

C#:
   private ScriptEngine pythonEngine;  //python engine
C#:
  public Form1()
  {
      InitializeComponent();
      pythonEngine = Python.CreateEngine();

      // kütüphanelerin kurulu olduğu dizini gösteriyoruz ki kütüphaneleri bulsun.
      var searchPaths = pythonEngine.GetSearchPaths();
      searchPaths.Add("..\\..\\Lib");
      pythonEngine.SetSearchPaths(searchPaths);
  }

C#:
   private void button1_Click(object sender, EventArgs e)
   {
   
       string originalString = textBox1.Text;

       // Kullanıcıdan gelen bilgiyi python tarafına yolluyoruz.
       var scope = pythonEngine.CreateScope();

       scope.SetVariable("originalString", originalString);
       // scriptPathte belirtilen Python kodunu çalıştır

       string scriptPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "base64.py");  //proje klasöründe ara
       pythonEngine.ExecuteFile(scriptPath, scope);


       // Get the result from Python script
       string encodedString = scope.GetVariable<string>("encodedString");
       string decodedString = scope.GetVariable<string>("decodedString");

       // Display results in labels
       textBox2.Text = "Original string: " + originalString;
       textBox3.Text = "Encoded string: " + encodedString;
       textBox4.Text = "Decoded string: " + decodedString;
   }



Python dosyamızı proje klasörüne taşıdıktan sonra uygulamayı açabiliriz.
57noqos.jpg


Okuduğunuz için teşekkürler.
 

tamam ağa

Uzman üye
7 Haz 2023
1,458
831
Konu hoşta kanka base64 şifreleme sayılmıyor (kriptolojide) bunun yerine kodlama desek daha iyi olurdu güzel konu thanks.
 

drjacob

Uzman üye
21 Ocak 2012
1,776
404
localhost
Herkese merhaba arkadaşlar ben Kruvazör
Bu projenin Python kısmında bana uzun süredir destek veren @Helmsys'e teşekkür ederim.

Günümüzün modern yazılım geliştirme süreçlerinde çeşitli yazılım dillerinin beraber kullanılması sık sık karşılaştığımız bir olaydır.
Bu sebepten dolayı C# ve Python dillerini birbirine entegre etme konusu hususunda bir çalışma yaptım ve bu yazımda C# ve pythonun uyumlu biçimde çalışmasını mümkün kılan IronPythona bakacağız ve bir proje gerçekleştireceğiz.
IronPython official site

IronPython, Python dilinin ana özelliklerini korurken, C# tarafında entegrasyon sağlar. Bu birleşim, C# ve Python kodlarının bir arada kullanılabilmesini ve birbirleriyle etkileşimde bulunabilmesini mümkün kılar.
Örneğin, C# tarafından çağrılan bir Python modülü veya tersine Python tarafından çağrılan bir C# sınıfı oluşturabilirsiniz.
ya da C# Formda girilen bir veriyi python tarafında işleyebilir ve tam tersi işlem de gerçekleştirebilirsiniz.
hg2ueaq.jpg

IronPython, Dynamic Language Runtime (DLR) üzerine kuruludur. DLR, dinamik olarak yazılmış dillerin daha etkili bir şekilde çalışmasını sağlayan bir iletişim sunar.
IronPython ve genel yapıyı kavradığımıza göre kurulumları yapabilir ve kodlarımızı yazabiliriz.
Öncelikle Visual Studio aracılığıyla bir WinForm projesi açalım.




blxnocx.jpg

Ardından paketleri indirelim.
dnv1c97.jpg

Şimdi Form kodlarımızı yazalım.

1 Label
4 adet textbox
1 adet button

9wuf1uc.jpg

Şimdi python kodlarımızı yazalım.
Python:
import base64

originalString = str(originalString)

print("Orjinal metin: " + originalString)

encodedString = base64.b64encode(originalString.encode()).decode()
print("Şifreli metin: " + encodedString)

decodedString = base64.b64decode(encodedString).decode()
print("Şifresi açık metin: " + decodedString)

encodedString, decodedString

Şimdi de Pythona gönderdiğimiz verileri geri almak adına C# Kodlarımızı yazalım.
Global alanda bu şekilde tanımlama yapalım

C#:
   private ScriptEngine pythonEngine;  //python engine
C#:
  public Form1()
  {
      InitializeComponent();
      pythonEngine = Python.CreateEngine();

      // kütüphanelerin kurulu olduğu dizini gösteriyoruz ki kütüphaneleri bulsun.
      var searchPaths = pythonEngine.GetSearchPaths();
      searchPaths.Add("..\\..\\Lib");
      pythonEngine.SetSearchPaths(searchPaths);
  }

C#:
   private void button1_Click(object sender, EventArgs e)
   {
       string originalString = textBox1.Text;

       // Kullanıcıdan gelen bilgiyi python tarafına yolluyoruz.
       var scope = pythonEngine.CreateScope();

       scope.SetVariable("originalString", originalString);
       // scriptPathte belirtilen Python kodunu çalıştır

       string scriptPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "base64.py");  //proje klasöründe ara
       pythonEngine.ExecuteFile(scriptPath, scope);


       // Get the result from Python script
       string encodedString = scope.GetVariable<string>("encodedString");
       string decodedString = scope.GetVariable<string>("decodedString");

       // Display results in labels
       textBox2.Text = "Original string: " + originalString;
       textBox3.Text = "Encoded string: " + encodedString;
       textBox4.Text = "Decoded string: " + decodedString;
   }



Python dosyamızı proje klasörüne taşıdıktan sonra uygulamayı açabiliriz.
57noqos.jpg


Okuduğunuz için teşekkürler.
elien sağlık hocam.
 

Bunjo

Uzman üye
14 Ara 2020
1,587
1,883
HTTParty
Herkese merhaba arkadaşlar ben Kruvazör
Bu projenin Python kısmında bana uzun süredir destek veren @Helmsys'e teşekkür ederim.

Günümüzün modern yazılım geliştirme süreçlerinde çeşitli yazılım dillerinin beraber kullanılması sık sık karşılaştığımız bir olaydır.
Bu sebepten dolayı C# ve Python dillerini birbirine entegre etme konusu hususunda bir çalışma yaptım ve bu yazımda C# ve pythonun uyumlu biçimde çalışmasını mümkün kılan IronPythona bakacağız ve bir proje gerçekleştireceğiz.
IronPython official site

IronPython, Python dilinin ana özelliklerini korurken, C# tarafında entegrasyon sağlar. Bu birleşim, C# ve Python kodlarının bir arada kullanılabilmesini ve birbirleriyle etkileşimde bulunabilmesini mümkün kılar.
Örneğin, C# tarafından çağrılan bir Python modülü veya tersine Python tarafından çağrılan bir C# sınıfı oluşturabilirsiniz.
ya da C# Formda girilen bir veriyi python tarafında işleyebilir ve tam tersi işlem de gerçekleştirebilirsiniz.
hg2ueaq.jpg

IronPython, Dynamic Language Runtime (DLR) üzerine kuruludur. DLR, dinamik olarak yazılmış dillerin daha etkili bir şekilde çalışmasını sağlayan bir iletişim sunar.
IronPython ve genel yapıyı kavradığımıza göre kurulumları yapabilir ve kodlarımızı yazabiliriz.
Öncelikle Visual Studio aracılığıyla bir WinForm projesi açalım.




blxnocx.jpg

Ardından paketleri indirelim.
dnv1c97.jpg

Şimdi Form kodlarımızı yazalım.

1 Label
4 adet textbox
1 adet button

9wuf1uc.jpg

Şimdi python kodlarımızı yazalım.
Python:
import base64

originalString = str(originalString)

print("Orjinal metin: " + originalString)

encodedString = base64.b64encode(originalString.encode()).decode()
print("Şifreli metin: " + encodedString)

decodedString = base64.b64decode(encodedString).decode()
print("Şifresi açık metin: " + decodedString)

encodedString, decodedString

Şimdi de Pythona gönderdiğimiz verileri geri almak adına C# Kodlarımızı yazalım.
Global alanda bu şekilde tanımlama yapalım

C#:
   private ScriptEngine pythonEngine;  //python engine
C#:
  public Form1()
  {
      InitializeComponent();
      pythonEngine = Python.CreateEngine();

      // kütüphanelerin kurulu olduğu dizini gösteriyoruz ki kütüphaneleri bulsun.
      var searchPaths = pythonEngine.GetSearchPaths();
      searchPaths.Add("..\\..\\Lib");
      pythonEngine.SetSearchPaths(searchPaths);
  }

C#:
   private void button1_Click(object sender, EventArgs e)
   {
  
       string originalString = textBox1.Text;

       // Kullanıcıdan gelen bilgiyi python tarafına yolluyoruz.
       var scope = pythonEngine.CreateScope();

       scope.SetVariable("originalString", originalString);
       // scriptPathte belirtilen Python kodunu çalıştır

       string scriptPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "base64.py");  //proje klasöründe ara
       pythonEngine.ExecuteFile(scriptPath, scope);


       // Get the result from Python script
       string encodedString = scope.GetVariable<string>("encodedString");
       string decodedString = scope.GetVariable<string>("decodedString");

       // Display results in labels
       textBox2.Text = "Original string: " + originalString;
       textBox3.Text = "Encoded string: " + encodedString;
       textBox4.Text = "Decoded string: " + decodedString;
   }



Python dosyamızı proje klasörüne taşıdıktan sonra uygulamayı açabiliriz.
57noqos.jpg


Okuduğunuz için teşekkürler.
Ruby için de var mı aynı destek :D?
 

iskabo

Black Hat
28 Kas 2023
131
58
Herkese merhaba arkadaşlar ben Kruvazör
Bu projenin Python kısmında bana uzun süredir destek veren @Helmsys'e teşekkür ederim.

Günümüzün modern yazılım geliştirme süreçlerinde çeşitli yazılım dillerinin beraber kullanılması sık sık karşılaştığımız bir olaydır.
Bu sebepten dolayı C# ve Python dillerini birbirine entegre etme konusu hususunda bir çalışma yaptım ve bu yazımda C# ve pythonun uyumlu biçimde çalışmasını mümkün kılan IronPythona bakacağız ve bir proje gerçekleştireceğiz.
IronPython official site

IronPython, Python dilinin ana özelliklerini korurken, C# tarafında entegrasyon sağlar. Bu birleşim, C# ve Python kodlarının bir arada kullanılabilmesini ve birbirleriyle etkileşimde bulunabilmesini mümkün kılar.
Örneğin, C# tarafından çağrılan bir Python modülü veya tersine Python tarafından çağrılan bir C# sınıfı oluşturabilirsiniz.
ya da C# Formda girilen bir veriyi python tarafında işleyebilir ve tam tersi işlem de gerçekleştirebilirsiniz.
hg2ueaq.jpg

IronPython, Dynamic Language Runtime (DLR) üzerine kuruludur. DLR, dinamik olarak yazılmış dillerin daha etkili bir şekilde çalışmasını sağlayan bir iletişim sunar.
IronPython ve genel yapıyı kavradığımıza göre kurulumları yapabilir ve kodlarımızı yazabiliriz.
Öncelikle Visual Studio aracılığıyla bir WinForm projesi açalım.




blxnocx.jpg

Ardından paketleri indirelim.
dnv1c97.jpg

Şimdi Form kodlarımızı yazalım.

1 Label
4 adet textbox
1 adet button

9wuf1uc.jpg

Şimdi python kodlarımızı yazalım.
Python:
import base64

originalString = str(originalString)

print("Orjinal metin: " + originalString)

encodedString = base64.b64encode(originalString.encode()).decode()
print("Şifreli metin: " + encodedString)

decodedString = base64.b64decode(encodedString).decode()
print("Şifresi açık metin: " + decodedString)

encodedString, decodedString

Şimdi de Pythona gönderdiğimiz verileri geri almak adına C# Kodlarımızı yazalım.
Global alanda bu şekilde tanımlama yapalım

C#:
   private ScriptEngine pythonEngine;  //python engine
C#:
  public Form1()
  {
      InitializeComponent();
      pythonEngine = Python.CreateEngine();

      // kütüphanelerin kurulu olduğu dizini gösteriyoruz ki kütüphaneleri bulsun.
      var searchPaths = pythonEngine.GetSearchPaths();
      searchPaths.Add("..\\..\\Lib");
      pythonEngine.SetSearchPaths(searchPaths);
  }

C#:
   private void button1_Click(object sender, EventArgs e)
   {
  
       string originalString = textBox1.Text;

       // Kullanıcıdan gelen bilgiyi python tarafına yolluyoruz.
       var scope = pythonEngine.CreateScope();

       scope.SetVariable("originalString", originalString);
       // scriptPathte belirtilen Python kodunu çalıştır

       string scriptPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "base64.py");  //proje klasöründe ara
       pythonEngine.ExecuteFile(scriptPath, scope);


       // Get the result from Python script
       string encodedString = scope.GetVariable<string>("encodedString");
       string decodedString = scope.GetVariable<string>("decodedString");

       // Display results in labels
       textBox2.Text = "Original string: " + originalString;
       textBox3.Text = "Encoded string: " + encodedString;
       textBox4.Text = "Decoded string: " + decodedString;
   }



Python dosyamızı proje klasörüne taşıdıktan sonra uygulamayı açabiliriz.
57noqos.jpg


Okuduğunuz için teşekkürler.
elinize sağlık
 

kurononyanko

Katılımcı Üye
6 Şub 2022
534
397
Güzel güzel. Ar-ge'ye ses lazımdı.
bakalım benim de bir projem olabilir belki.
Ransomware ile savaş veren bir proje. Kripto işinde private key yok ise pek de şifreleme denmez o doğru.
 

alexandre20

Katılımcı Üye
13 Tem 2022
897
700
Konu öyle bir dil ile yazılmış ki sanki IronPython'u geliştirmişsin gibi bir izlenim almış insanlar, aşağıda "ar-geye ses lazımdı" diye bile var :D

"Bu projenin Python kısmında bana uzun süredir destek veren @Helmsys'e teşekkür ederim."
uzun süredir derken tam olarak kaç haftadan bahsediyoruz? çünkü IronPython'u kullanmak için 10dk documentation'a bakmak yetiyor
 

kurononyanko

Katılımcı Üye
6 Şub 2022
534
397
Konu öyle bir dil ile yazılmış ki sanki IronPython'u geliştirmişsin gibi bir izlenim almış insanlar, aşağıda "ar-geye ses lazımdı" diye bile var :D

"Bu projenin Python kısmında bana uzun süredir destek veren @Helmsys'e teşekkür ederim."
uzun süredir derken tam olarak kaç haftadan bahsediyoruz? çünkü IronPython'u kullanmak için 10dk documentation'a bakmak yetiyor
seni hatırlatıyorum genelde laf çarpıyorsun.
Ama senden bir şey göremiyoruz.
Forumu iyice sarsaklayanlardan sonra arge adına konu görmek bile iyi bir şey.
Ben de karalama yaparım ancak emeğe değil, emeksizliğe.
Birine çamur atmak iyidir ancak bu ortaya bir şey koymayı da gerektirir. Hem bu sayede karşı tarafa hırs olur.
Mesela "bir programın arayüzünü nasıl değiştırip kendim yapmış gibi gösterebilirim" başlıklı bir konu açmış elemanı linçlerim çünkü hiçbir şey bilmeden bir anda en son adıma ulaşmak istiyor.

Umarım izah edebilmişimdir.
 

Kruvazör

Yazılım Ekibi Lideri
28 Mar 2020
1,724
2,541
Wrong Side Of Heaven
"Bu projenin Python kısmında bana uzun süredir destek veren @Helmsys'e teşekkür ederim."
uzun süredir derken tam olarak kaç haftadan bahsediyoruz? çünkü IronPython'u kullanmak için 10dk documentation'a bakmak yetiyor
uzun süre ve helmsysten kasıt IronPython değil genel anlamda python c# entegrasyonu diyebiliriz aslında.
uzun bir süredir lafta kalan bir düşüncemizdi onu araştırma ve kod ile temellendirdik. IronPython kullanmadan farklı yöntemler ile de benzeri bir entegrasyon fikrini de yakında yapabilirsek paylaşacağız.

Konu öyle bir dil ile yazılmış ki sanki IronPython'u geliştirmişsin gibi bir izlenim almış insanlar, aşağıda "ar-geye ses lazımdı" diye bile var :D
Yazım tarzım iyi yani :D
 

Speedy Gonzales

Katılımcı Üye
12 Kas 2021
634
296
in every technology system
Herkese merhaba arkadaşlar ben Kruvazör
Bu projenin Python kısmında bana uzun süredir destek veren @Helmsys'e teşekkür ederim.

Günümüzün modern yazılım geliştirme süreçlerinde çeşitli yazılım dillerinin beraber kullanılması sık sık karşılaştığımız bir olaydır.
Bu sebepten dolayı C# ve Python dillerini birbirine entegre etme konusu hususunda bir çalışma yaptım ve bu yazımda C# ve pythonun uyumlu biçimde çalışmasını mümkün kılan IronPythona bakacağız ve bir proje gerçekleştireceğiz.
IronPython official site

IronPython, Python dilinin ana özelliklerini korurken, C# tarafında entegrasyon sağlar. Bu birleşim, C# ve Python kodlarının bir arada kullanılabilmesini ve birbirleriyle etkileşimde bulunabilmesini mümkün kılar.
Örneğin, C# tarafından çağrılan bir Python modülü veya tersine Python tarafından çağrılan bir C# sınıfı oluşturabilirsiniz.
ya da C# Formda girilen bir veriyi python tarafında işleyebilir ve tam tersi işlem de gerçekleştirebilirsiniz.
hg2ueaq.jpg

IronPython, Dynamic Language Runtime (DLR) üzerine kuruludur. DLR, dinamik olarak yazılmış dillerin daha etkili bir şekilde çalışmasını sağlayan bir iletişim sunar.
IronPython ve genel yapıyı kavradığımıza göre kurulumları yapabilir ve kodlarımızı yazabiliriz.
Öncelikle Visual Studio aracılığıyla bir WinForm projesi açalım.




blxnocx.jpg

Ardından paketleri indirelim.
dnv1c97.jpg

Şimdi Form kodlarımızı yazalım.

1 Label
4 adet textbox
1 adet button

9wuf1uc.jpg

Şimdi python kodlarımızı yazalım.
Python:
import base64

originalString = str(originalString)

print("Orjinal metin: " + originalString)

encodedString = base64.b64encode(originalString.encode()).decode()
print("Şifreli metin: " + encodedString)

decodedString = base64.b64decode(encodedString).decode()
print("Şifresi açık metin: " + decodedString)

encodedString, decodedString

Şimdi de Pythona gönderdiğimiz verileri geri almak adına C# Kodlarımızı yazalım.
Global alanda bu şekilde tanımlama yapalım

C#:
   private ScriptEngine pythonEngine;  //python engine
C#:
  public Form1()
  {
      InitializeComponent();
      pythonEngine = Python.CreateEngine();

      // kütüphanelerin kurulu olduğu dizini gösteriyoruz ki kütüphaneleri bulsun.
      var searchPaths = pythonEngine.GetSearchPaths();
      searchPaths.Add("..\\..\\Lib");
      pythonEngine.SetSearchPaths(searchPaths);
  }

C#:
   private void button1_Click(object sender, EventArgs e)
   {
  
       string originalString = textBox1.Text;

       // Kullanıcıdan gelen bilgiyi python tarafına yolluyoruz.
       var scope = pythonEngine.CreateScope();

       scope.SetVariable("originalString", originalString);
       // scriptPathte belirtilen Python kodunu çalıştır

       string scriptPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "base64.py");  //proje klasöründe ara
       pythonEngine.ExecuteFile(scriptPath, scope);


       // Get the result from Python script
       string encodedString = scope.GetVariable<string>("encodedString");
       string decodedString = scope.GetVariable<string>("decodedString");

       // Display results in labels
       textBox2.Text = "Original string: " + originalString;
       textBox3.Text = "Encoded string: " + encodedString;
       textBox4.Text = "Decoded string: " + decodedString;
   }



Python dosyamızı proje klasörüne taşıdıktan sonra uygulamayı açabiliriz.
57noqos.jpg


Okuduğunuz için teşekkürler.
Eline sağlık
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.