Cripter

Cifrario di Cesare

« Older   Newer »
 
  Share  
.
  1. GDM1
        Like  
     
    .

    User deleted


    Ragazzi vi posto un cifrario di cesare in C!
    Per chi non lo sapesse il cifrario di cesare è un cifrario a sostituzione monoalfabetica in cui ogni lettera del testo viene sostituita dalla lettera che si trova 3 posizioni dopo nell'alfabeto.

    CODICE
    #include <stdio.h>
    #include <string.h>


    void decript(char *stringa);
    void encript(char *stringa);

    int main() {
     
     
      int i;
      int l;
      int n;
      int s;
      char stringa[1200];
      system ("cls");
      printf("Inserisci la frase da elaborare: ");
      gets(stringa);
      l=strlen(stringa);
      if (l>120){
                 printf("Hai inserito una lunghezza non consentita!!!");
                 system("pause");
                 return 0;
                 }
      system("cls");
      printf("1) Decriptn2) Encriptn");
      scanf("%d", &n);
      if (n==1){
                decript(stringa);
                printf("nStringa convertita:n%­snn",stringa);
                }else{
                encript(stringa);
                printf("nStringa convertita:n%­snn",stringa);
                }
      system("pause");
      return 0;
    }


    void decript(char *stringa) {
       int i;
       int a;
       for (i=0;i<strlen(stringa);i++) {
       if ( ((stringa[i]>= 'A') && (stringa[i]<='Z')) || ((stringa[i]>='a')&&(stringa[i]<='z')) || ((stringa[i]>='0')&&(stringa[i]<='9')) )
       a = stringa[i] += 3 ;
       if ((a>'9')&&(a<'A'))
       stringa[i] -= 10 ;
       if ((a>'Z')&&(a<'a'))
       stringa[i] -= 26 ;
       if (a>'z')
       stringa[i] -= 26 ;
       }
    }

    void encript(char *stringa) {
       int i;
       int a;
       for (i=0;i<strlen(stringa);i++){
       if ( ((stringa[i]>= 'A') && (stringa[i]<='Z')) || ((stringa[i]>='a')&&(stringa[i]<='z')) || ((stringa[i]>='0')&&(stringa[i]<='9')) )
       a = stringa[i] -= 3 ;
       if (a<'0')
       stringa[i] += 10 ;
       if ((a<'A')&&(a>'9'))
       stringa[i] += 26 ;
       if ((a<'a')&&(a>'Z'))
       stringa[i] += 26 ;
       }
    }


    Anche postato su pastebin per chi volesse compilarlo!!

    Qui


    ATTENZIONE!!!!
    Dentro questo programma cè un bug!!!
    Chi mi sa dire qual'è e come rimediare???

    SPOILER (click to view)
    Vediamo se riuscite a scovarlo!! :ppowa:

    File Allegato
    Cripter.rar
    (Number of downloads: 5)

     
    .
  2. GDM1
        Like  
     
    .

    User deleted


    UP!!!
    Dai ragazzi nessuno??? :psbam:
     
    .
  3. megas93
        Like  
     
    .

    User deleted


    XD io so un flooder mica un mago xD
     
    .
  4. Depa Marco
        Like  
     
    .

    User deleted


    beh megas... eheheh lo sapevamo... ahahahah
     
    .
  5.     Like  
     
    .

    HackForFun --H4CK MEMBER--

    Group
    Member
    Posts
    748
    Reputation
    0
    Location
    Casa mia

    Status
    Offline
    #include <stdio.h>
    #include <string.h>


    void decript(char *stringa);
    void encript(char *stringa);

    int main() {


    int i;
    int l;
    int n;
    int s;
    char stringa[1200];
    system ("cls");
    printf("Inserisci la frase da elaborare: ");
    gets(stringa);
    l=strlen(stringa);
    if (l>120){
    printf("Hai inserito una lunghezza non consentita!!!");
    system("pause");
    return 0;
    }
    system("cls");
    printf("1) Decriptn2) Encriptn"); ---> Manca la slash dopo encript e decript..
    scanf("%d", &n);
    if (n==1){
    decript(stringa);
    printf("nStringa convertita:n%­snn",stringa);
    }else{
    encript(stringa);
    printf("nStringa convertita:n%­snn",stringa);
    }
    system("pause");
    return 0;
    }


    void decript(char *stringa) {
    int i;
    int a;
    for (i=0;i<strlen(stringa);i++) {
    if ( ((stringa[i]>= 'A') && (stringa[i]<='Z')) || ((stringa[i]>='a')&&(stringa[i]<='z')) || ((stringa[i]>='0')&&(stringa[i]<='9')) )
    a = stringa[i] += 3 ;
    if ((a>'9')&&(a<'A'))
    stringa[i] -= 10 ;
    if ((a>'Z')&&(a<'a'))
    stringa[i] -= 26 ;
    if (a>'z')
    stringa[i] -= 26 ;
    }
    }

    void encript(char *stringa) {
    int i;
    int a;
    for (i=0;i<strlen(stringa);i++){
    if ( ((stringa[i]>= 'A') && (stringa[i]<='Z')) || ((stringa[i]>='a')&&(stringa[i]<='z')) || ((stringa[i]>='0')&&(stringa[i]<='9')) )
    a = stringa[i] -= 3 ;
    if (a<'0')
    stringa[i] += 10 ;
    if ((a<'A')&&(a>'9'))
    stringa[i] += 26 ;
    if ((a<'a')&&(a>'Z'))
    stringa[i] += 26 ;
    }
    }
     
    .
  6. The Titan
        Like  
     
    .

    User deleted


    gia :giagia: :giagia:
     
    .
  7. Depa Marco
        Like  
     
    .

    User deleted


    grande... nn me ne ero accorto...
     
    .
  8. GDM1
        Like  
     
    .

    User deleted


    CITAZIONE
    #include <stdio.h>
    #include <string.h>


    void decript(char *stringa);
    void encript(char *stringa);

    int main() {


    int i;
    int l;
    int n;
    int s;
    char stringa[1200];
    system ("cls");
    printf("Inserisci la frase da elaborare: ");
    gets(stringa);
    l=strlen(stringa);
    if (l>120){
    printf("Hai inserito una lunghezza non consentita!!!");
    system("pause");
    return 0;
    }
    system("cls");
    printf("1) Decriptn2) Encriptn"); ---> Manca la slash dopo encript e decript..
    scanf("%d", &n);
    if (n==1){
    decript(stringa);
    printf("nStringa convertita:n%­snn",stringa);
    }else{
    encript(stringa);
    printf("nStringa convertita:n%­snn",stringa);
    }
    system("pause");
    return 0;
    }


    void decript(char *stringa) {
    int i;
    int a;
    for (i=0;i<strlen(stringa);i++) {
    if ( ((stringa[i]>= 'A') && (stringa[i]<='Z')) || ((stringa[i]>='a')&&(stringa[i]<='z')) || ((stringa[i]>='0')&&(stringa[i]<='9')) )
    a = stringa[i] += 3 ;
    if ((a>'9')&&(a<'A'))
    stringa[i] -= 10 ;
    if ((a>'Z')&&(a<'a'))
    stringa[i] -= 26 ;
    if (a>'z')
    stringa[i] -= 26 ;
    }
    }

    void encript(char *stringa) {
    int i;
    int a;
    for (i=0;i<strlen(stringa);i++){
    if ( ((stringa[i]>= 'A') && (stringa[i]<='Z')) || ((stringa[i]>='a')&&(stringa[i]<='z')) || ((stringa[i]>='0')&&(stringa[i]<='9')) )
    a = stringa[i] -= 3 ;
    if (a<'0')
    stringa[i] += 10 ;
    if ((a<'A')&&(a>'9'))
    stringa[i] += 26 ;
    if ((a<'a')&&(a>'Z'))
    stringa[i] += 26 ;
    }
    }

    Purtroppo no!! xD Quello è un errore di forumcommunity che omette le "" nel codice!!!
    Vabbè ve lo dirò io xD

    L'errore è qui:
    char stringa[1200];
    gets(stringa);


    questo tipo di errore è molto pericoloso per la programmazione!!! proprio perchè se inseriamo una stringa superiore a 1200 il buffer di memoria va in overflow ovvero sovraccarico e si "intoppa" il programma!! Diciamo che il registro EIP , che è il registro dello stack che ritorna l'idirizzo della funzione che deve eseguire successivamente, viene sovrascritto con quello che scriviamo!!
    E se noi scriviamo un'indirizzo di una shell di comando?
    In quel caso possiamo fare ciò che si vuole alla macchina avendo aperto una shell di rott! ;D
     
    .
  9. @N63
        Like  
     
    .

    User deleted


    nn mi intendo molto di programmazione....
    :ç_ç: :ç_ç:
     
    .
  10. black224
        Like  
     
    .

    User deleted


    io non ci ho capito niente...
     
    .
  11. DarkDevil88
        Like  
     
    .

    User deleted


    caspita non è che mi puoi fare da maestro? xD
     
    .
  12. MS-DOS
        Like  
     
    .

    User deleted


    Molto carino. Bravo.
     
    .
11 replies since 18/8/2009, 14:41   147 views
  Share  
.