Şifreleme ve şifre çözme için C++ programı ( Dizeyi şifrelemek ve şifresini çözmek için )

Programlama ve Script dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
Kullanıcı avatarı
root@localhost
Megabyte4
Megabyte4
Mesajlar: 1711
Kayıt: 31 Ağu 2022, 17:51
cinsiyet: Erkek
Teşekkür etti: 1897 kez
Teşekkür edildi: 1257 kez

Şifreleme ve şifre çözme için C++ programı ( Dizeyi şifrelemek ve şifresini çözmek için )

Mesaj gönderen root@localhost »

Resim


1. Yöntem: Caesar Cypher Algorithması kullanarak dizeyi şifrelemek ve şifresini çözmek için C++ programı.

Şifreleme ve şifre çözme için basit bir anahtar değeri ekleme ve çıkarma yöntemi kullandık.

Bir diziyi şifrelemek için, dizideki karakterlerin ASCII değerine anahtar/değer '2' eklenir.

Benzer şekilde, bir dizenin şifresini çözmek için anahtar/değer çifti '2', karakterlerin ASCII değerinden çıkarılır.

Şifreleme temel olarak, belirli bir mesajı veya bilgiyi diğer kişiler tarafından okunamayacak şekilde kodlamak anlamına gelir ve şifre çözme, bu mesajı okunabilir hale getirmek için kodunu çözme işlemidir.

Kod: Tümünü seç

//Bir diziyi şifrelemek ve şifresini çözmek için basit C++ programı

#include <iostream>
using namespace std;

int main()
{
   int i, x;
   char str[100];

   cout << "Lutfen bir dize girin(bir kelime yahut rakam girin) :\t";
   cin >> str;

   cout << "\nLutfen asagidaki seceneklerden birini secin:\n";
   cout << "1 = Dizeyi sifrele.\n";
   cout << "2 = Dizenin sifresini coz.\n";
   cin >> x;

   //switch case ifadelerini kullanma
   switch(x)
   {
      //bir diziyi sifrelemek için ilk durum
      case 1:
         for(i = 0; (i < 100 && str[i] != '\0'); i++)
            str[i] = str[i] + 2; //the key for encryption is 3 that is added to ASCII value

         cout << "\nSifrelenmis dize : " << str << endl;
         break;

      //bir dizenin şifresini çözmek için ikinci durum
      case 2:
         for(i = 0; (i < 100 && str[i] != '\0'); i++)
         str[i] = str[i] - 2; //şifreleme anahtarı 3'tür ve ASCII değerinden çıkarılır

      cout << "\nSifresi cozulen dize : " << str << endl;
      break;

      default:
         cout << "\nGecersiz Giris !!!\n";
   }
   return 0;
}
Ekran Çıktıları :

Resim

Resim

Resim

Resim

Açıklama :

Yukarıdaki programda anahtarın değerini değiştirirseniz şifrelenmiş değer farklı olacaktır.

Kullanıcı 1 veya 2'den farklı bir değer girerse, Geçersiz Giriş gösterecektir.


kaynak :

Kod: Tümünü seç

http://www.trytoprogram.com/cpp-examples/cplusplus-program-encrypt-decrypt-string
2. Yöntem : RSA algoritmasını kullanarak dizeyi şifrelemek ve şifresini çözmek için C++ programı.



RSA algoritması, Ceaser Cypher'dan biraz karmaşıktır. Açık anahtarın herkes tarafından bilindiği ve şifreleme için kullanıldığı açık ve özel anahtar kullanımını içerir.

Öte yandan, Özel anahtar yalnızca şifrelenmiş mesajın şifresini çözmek için kullanılır.

İşte şifreleme algoritmasının adımlarına daha derin bir bakış :

1 : Anahtar Oluşturma

İki büyük asal sayı x ve y seçin
n = x * y'yi hesapla
burada n, özel ve genel anahtarın modülüdür
Totient fonksiyonunu hesaplayın, ø (n) = (x − 1)(y − 1)
e'nin ø(n) ve 1 < e < ø(n) için eş asal olduğu bir e tamsayısını seçin.
e, şifreleme için kullanılan genel anahtar üssüdür
Şimdi d · e mod ø (n) = 1 olacak şekilde d'yi seçin, yani >kod>d, mod ø (n)'de e'nin çarpımsal tersidir.

2 : Mesajın Şifrelenmesi

Mesajlar, oluşturulan Genel anahtar kullanılarak şifrelenir ve herkes tarafından bilinir.

Genel anahtar hem e hem de n'nin işlevidir, yani {e,n}.

M mesaj (düz metin) ise, şifreli metin

C = M ^ n( mod n )

3 : Mesajın Şifresini Çözme

Özel anahtar hem d'nin hem de n'nin yani {d,n}'nin işlevidir.

C şifreli şifreli metin ise, şifresi çözülmüş düz metin M

M = C ^ d ( mod n )

Bu program için nasıl kaynak kodu yazılacağını merak ediyor olabilirsiniz. Hadi yapalım. let's get do it do it

Kaynak kodu :

Kod: Tümünü seç

//Şifreleme ve şifre çözme için C++ programı
#include<iostream>
#include<stdlib.h>
#include<math.h>
#include<string.h>

using namespace std;

int x, y, n, t, i, flag;
long int e[50], d[50], temp[50], j;
char en[50], m[50];
char msg[100];
int prime(long int); // asal sayıyı kontrol eden fonksiyon
void encryption_key();
long int cd(long int);
void encrypt();
void decrypt();

int main()
{
   cout << "\nBirinci Asal Sayiyi Giriniz :\n";
   cin >> x;

   //girişin asal olup olmadığını kontrol etme
   flag = prime(x);
   if(flag == 0)
   {
      cout << "\nGecersiz Giris!\n";
      exit(0);
   }

   cout << "\nIkinci Asal Sayiyi Giriniz :\n";
   cin >> y;

   flag = prime(y);
   if(flag == 0 || x == y)
   {
      cout << "\nGecersiz Giris!\n";
      exit(0);
   }

   cout << "\nSifrelemek icin Bir Dize Yahut Kelime Giriniz :\n";
   cin >> msg;

   for(i = 0; msg[i] != NULL; i++)
      m[i] = msg[i];
   n = x * y;
   t = (x - 1) * (y - 1);

   encryption_key();
   cout << "\n e VE d nin Olasi Degerleri :\n";

   for(i = 0; i < j - 1; i++)
      cout << "\n" << e[i] << "\t" << d[i];

   encrypt();
   decrypt();
   return 0;
} //ana programın sonu

int prime(long int pr)
{
   int i;
   j = sqrt(pr);
   for(i = 2; i <= j; i++)
   {
      if(pr % i == 0)
         return 0;
   }
   return 1;
 }

//şifreleme anahtarı oluşturma işlevi
void encryption_key()
{
   int k;
   k = 0;
   for(i = 2; i < t; i++)
   {
      if(t % i == 0)
         continue;
      flag = prime(i);
      if(flag == 1 && i != x && i != y)
      {
         e[k] = i;
         flag = cd(e[k]);
         if(flag > 0)
         {
            d[k] = flag;
            k++;
         }
         if(k == 99)
         break;
      }
   }
}

long int cd(long int a)
{
   long int k = 1;
   while(1)
   {
      k = k + t;
      if(k % a == 0)
         return(k/a);
   }
}

//mesajı şifreleme işlevi
void encrypt()
{
   long int pt, ct, key = e[0], k, len;
   i = 0;
   len = strlen(msg);

   while(i != len)
   {
      pt = m[i];
      pt = pt - 96;
      k = 1;
      for(j = 0; j < key; j++)
      {
         k = k * pt;
         k = k % n;
      }
      temp[i] = k;
      ct= k + 96;
      en[i] = ct;
      i++;
   }
   en[i] = -1;
   cout << "\n\nSifreli Mesaj Sudur : \n";
   for(i=0; en[i] != -1; i++)
      cout << en[i];
}

//mesajın şifresini çözme işlevi
void decrypt()
{
   long int pt, ct, key = d[0], k;
   i = 0;
   while(en[i] != -1)
   {
      ct = temp[i];
      k = 1;
      for(j = 0; j < key; j++)
      {
         k = k * ct;
         k = k % n;
      }
      pt = k + 96;
      m[i] = pt;
      i++;
   }
   m[i] = -1;
   cout << "\n\nSifresi Cozulmus Mesaj Sudur : \n";
   for(i = 0; m[i] != -1; i++)
      cout << m[i];

  cout << endl;
}
Ekran Çıktısı :

Resim

Kaynak :

Kod: Tümünü seç

https://www.yazilimadasi.com/viewtopic.php?t=423
Cevapla