Jump to content



υλοποιηση κρυπτογραφησης καισαρα(solved)


giannis-21

Recommended Posts

Δημοσιεύτηκε

παιδες εχω μια ασκηση(δεν μας ενδιαφερει η γλωσσα προγραμματισμου) στην οποια πρεπει να δινει ο χρηστης μια φραση ή να την διαβαζει απο ενα αρχειο και να κρυπτογραφηται συμφωνα με τον αλγοριθμο του καισαρα και αν μπορουμε να κανουμε μετα την αποκρυπτογραφηση.εχει κανενας καμια ιδεα τι που πως γιατι?

απο c , c++ ,java κατεχουμε κατι..τωρα απο αλλες γλωσσες σκραπες:help1:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strlen As Integer
Dim alphabet(0 To 25) As String
Dim str As String
Dim i As Integer
Dim j As Integer
Dim flag As Boolean
Dim key As Integer
TextBox3.Text = ""
alphabet(0) = "a"
alphabet(1) = "b"
alphabet(2) = "c"
alphabet(3) = "d"
alphabet(4) = "e"
alphabet(5) = "f"
alphabet(6) = "g"
alphabet(7) = "h"
alphabet(8) = "i"
alphabet(9) = "j"
alphabet(10) = "k"
alphabet(11) = "l"
alphabet(12) = "m"
alphabet(13) = "n"
alphabet(14) = "o"
alphabet(15) = "p"
alphabet(16) = "q"
alphabet(17) = "r"
alphabet(18) = "s"
alphabet(19) = "t"
alphabet(20) = "u"
alphabet(21) = "v"
alphabet(22) = "w"
alphabet(23) = "x"
alphabet(24) = "y"
alphabet(25) = "z"
strlen = TextBox2.Text.Length
If RadioButton1.Checked = True Then
key = Val(TextBox1.Text)
If key >= 1 And key <= 25 Then
str = TextBox2.Text.ToLower
For i = 1 To strlen
flag = False
If str.Substring(i - 1, 1) = " " Then
TextBox3.Text = TextBox3.Text + " "
flag = True
Else
For j = 0 To 25
If str.Substring(i - 1, 1) = alphabet(j) And flag = False Then
TextBox3.Text = TextBox3.Text + alphabet((j + key) Mod 26)
flag = True
End If
Next
End If


Next
Else
MsgBox("Το κλειδί δεν είναι μεταξύ των επιτρεπτών ορίων")
End If
Else
If RadioButton2.Checked = True Then
key = Val(TextBox1.Text)
If key >= 1 And key <= 25 Then
str = TextBox2.Text.ToLower
For i = 1 To strlen
flag = False
If (str.Substring(i - 1, 1) = " ") Then
TextBox3.Text = TextBox3.Text + " "
Else
For j = 0 To 25
If str.Substring(i - 1, 1) = alphabet(j) And flag = False Then
TextBox3.Text = TextBox3.Text + alphabet((26 + j - key) Mod 26)
flag = True
End If
Next
End If

Next
Else
MsgBox("Tο κλειδί δεν είναι μεταξύ των επιτρεπτών ορίων")
End If
Else
MsgBox("Δεν επιλέξατε κωδικοποίηση ή αποκωδικοποίηση")
End If
End If
End Sub

Σε Visual Basic είναι.

Εργασία από την σχολή μας. Τώρα αν δουλεύει, θα σε γελάσω.

Η κρυπτογράφιση σύμφωνα με τον αλγόρυθμο του καίσαρα είναι ο πιο απλός τρόπος κρυπτογράφησης. Πολύ απλά:

1) θα διαβάζεις γράμμα-γράμμα το κείμενο που σου δίνει ο χρήστης

2) μετατρέπεις το κάθε γράμμα σε αριθμό ascii

3) αφαιρείς από αυτό τον αριθμό το 3

4) και το ξαναμετατρέπεις σε γράμμα.

Έχουν περάσει 6 χρόνια από τότε και έχω μεγαλώσει αρκετά, αλλά είναι ακόμα επίκαιρο το άρθρο και έχει και κώδικα για αλγόριθμους μετάθεσης... προσπάθησε να μπεις στην λογική και ότι απλά να γράψεις τον κώδικα...

ευχαριστω παιδες.σημερα θα ξεκινησω να το γραφω..οταν τελειωσω θα το ποσταρω να το εχουμε:rolleyes:

// CEASAR Cryptography in C

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

//---------------------------------------------------------------------------

char *_Ceasar(char *pszPlaintext,int nKey);

//---------------------------------------------------------------------------

char szBuffer[128], szKey[128];

int nKey;

int main(int argc, char* argv[])

{

for(;;)

{

printf(" doste kleidi 1 eos 26 (i pataste apla enter gia na ekselthete):"); gets(szKey);

if(!strlen(szKey))

break;

if(!(nKey=atoi(szKey)) || nKey>26)

{

printf(" lathos kleidi : %d (apodektes timer: 1 eos 26)\n",nKey);

continue;

}

printf(" pliktrologise to keimeno sou:\n"); gets(szBuffer);

if(strlen(szBuffer))

printf(" kriptografima:%s\n",_Ceasar(strlwr(szBuffer),atoi(szKey)));

}

return 0;

}

//---------------------------------------------------------------------------

char *_Ceasar(char *pszPlaintext,int nKey)

{

int nCharIdx, nPlainLetter;

// apodektes times gia to nKey 1 os 26

if(nKey<1 || nKey>26)

return NULL;

for(nCharIdx=0;nCharIdx<strlen(pszPlaintext);nCharIdx++)

{

nPlainLetter = pszPlaintext[nCharIdx];

// einai mikra ta grammata?

if(pszPlaintext[nCharIdx]>='a' && pszPlaintext[nCharIdx]<='z')

{

// logo metatropis se ascii mipos meta to x den ginete sosta i metatropi?

if(nPlainLetter+nKey>'z')

pszPlaintext[nCharIdx] = (char)96+(nPlainLetter+nKey)-'z'; // Swap to z => a etc..

else

pszPlaintext[nCharIdx]+=nKey; // plain char + nKey

}

}

return pszPlaintext;

}

kai 2 ilopoiisi:

#include <stdio.h>

int main(void)

{

char messageClear[bUFSIZ];

char messageCrypt[bUFSIZ];

char buf[5];

int shift, i;

printf("This program encrypts a string using the Caesar Cipher \n\n");

printf("Enter alphabetic string: ", BUFSIZ);

fgets(messageClear, BUFSIZ, stdin);

fflush(stdin);

for (;;){

printf("\n\nEnter encryption key (1-4): ");

fgets(buf, 5, stdin);//the use of scanf is problematical, this is MUCH safer

fflush(stdin);

shift = buf[0] - 48;

if ((buf[1] != '\n') || (shift < 1 || shift > 4))

printf("Bad value for shift!\n");

else

break;

}

i=0;

while (messageClear){

messageCrypt = messageClear + shift;

i++;

}

messageCrypt = '\0';

printf("Your Message:\n%s", messageClear);

printf("Encrypted:\n%s", messageCrypt);

printf("\n\nType return to exit.\n");

getchar();

return 0;

}

Archived

This topic is now archived and is closed to further replies.

×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.