Come creare un cifrario in C

July 29

Come creare un cifrario in C


Un algoritmo è un semplice tipo di codice che sostituisce ogni lettera del messaggio segreto con un simbolo o un carattere specifico. Uno dei più noto è il cifrario di Cesare, che avanza semplicemente l'alfabeto un dato numero di lettere, in modo che A sia B e B è C, o A è M e B è N, a seconda di quanto si sposta esso. Manipolando valori ASCII, si può facilmente scrivere un programma in C che possono eseguire operazioni come questo per te al volo, la crittografia immediatamente qualsiasi messaggio che si digita.

istruzione

1 Includere il file di intestazione di input / output standard e dichiarare una funzione di crittografia che prende un numero intero. Questo intero rappresenterà il numero di lettere di spostare la cifra. In un cifrario con uno spostamento di 1, A sarebbe B; con uno spostamento di 2, A sarebbe C e così via. Questo codice preliminare dovrebbe essere simile a questo:

includere <stdio.h>

cifrare void (int letter_shift);

2 Creare la funzione di encrypt (). Questo dovrebbe iniziare dichiarando una variabile char, che si distinguerà per la lettera in fase di codifica e decodifica. Stampa un messaggio sullo schermo che chiede per l'input, e quindi memorizzare tale ingresso nella variabile char. Esso dovrebbe essere simile a questo:

cifrare void (int letter_shift)

{

char ch;

printf ( "Inserire il testo per crittografare:");

ch = getchar ();

3 Scrivi un ciclo while che esaminare il carattere corrente ed eseguire la crittografia. Il ciclo dovrebbe controllare per vedere se il carattere rientra nell'intervallo ASCII alfabeto, solo la crittografia, se lo fa, e spostare le lettere verso la fine dell'alfabeto di nuovo all'inizio. In questo modo un cifrario con uno spostamento di 1 renderà Z come A, non come [. Il ciclo stamperà ogni lettera sullo schermo come crittografa, fermandosi solo quando incontra il carattere di nuova riga. Questa seconda parte della funzione encrypt () dovrebbe essere simile alla seguente:

while(ch != '\n')

{

if (isalpha (ch))

{

if (isupper (ch) && isupper (ch + letter_shift) || islower (ch) && islower (ch + letter_shift))

putchar (ch + letter_shift);

altro

{

if (letter_shift> 0)

putchar (ch + letter_shift - 26);

altro

putchar (ch + letter_shift + 26);

}

}

altro

putchar (ch);

ch = getchar ();

}

putchar (ch);

}

4 Creare la funzione main () che inizia e termina il funzionamento del programma. Questo dovrebbe dichiarare la variabile letter_shift come un intero, stampare un messaggio di benvenuto per l'utente e chiedere quante lettere di spostare la cifra, la memorizzazione l'ingresso in letter_shift. Se l'ingresso è superiore a 26, ridurla usando l'operatore modulo per evitare overflow. Il programma si chiude passando letter_shift per cifrare () e in esecuzione la funzione più e più volte fino a quando non riceve un carattere di nuova riga. La funzione principale dovrebbe essere simile a questo:

int main (void)

{

int letter_shift;

printf ( "benvenuto alla Encryptor \ nCome lontano dovrei spostare le lettere Inserisci un numero:?");

scanf ( "% d", & letter_shift);

if (letter_shift> 26)

letter_shift = letter_shift% 26;

if (letter_shift & lt; -26)

letter_shift = letter_shift% -26;

while (getchar () = '\ n'!);

Encrypt (letter_shift);

return 0;

}

Consigli e avvertenze

  • È possibile decifrare un messaggio utilizzando l'inverso del turno utilizzato per crittografare esso. "Robot governare OK" codificato con uno spostamento di 7 è "Yvivaz ybsl VR", mentre "Yvivaz ybsl VR" codificato con uno spostamento di -7 è "robot governare OK."