Parsi Coders

نسخه‌ی کامل: مشکل با فایلها در سی ++
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام دوستان چند وقته تو محیط سی برنامه ننوشتم یادم رفته میشه برسی کنید مشکل این برنامه چیه؟
باید یه نوشته را کد کنه و باز دیکد کنه!از فایل بخونه و بنویسه!
کد:
#include<iostram.h>
#include<fstream.h>
#include<string.h>

int main()
{
    char buffer[5];
    char a[5];
    ifstream fin("mine.txt");
   //if(!fin)
    //{
      //  cout<<"cannot open file.\n";
       // return 1;
   // }
    ofstream fout("codefile.txt");
    while(!fin.eof())
    {
    for(int i=0;i<6;i++)
    {
        a[i]=buffer[i]-'A';
       fout<<a[i];
    }
    }
    fout.close();
    return 0;

}
البته کد را من ننوشتم!ممنون میشم راهنمایی کنید!
الان سی پلاس متاسفانه ندارم اما سورس بالای چیز ساده ای
یادمه گفتی واسه جای مهمی برنامه مینویسی
این کارتو انجام میده :
کد:
#include<conio.h>
#include <stdio.h>
#include<string.h>


int l[4],r[4],keys[2][8],ct[8];

void sbox(int sip[],int p[],int sbno,int i)
   {
    int sbox[2][4][4]={1,0,3,2,3,2,1,0,0,2,1,3,3,1,3,2,0,1,2,3,2,0,1,3,3,0,1,0,2,1,0,3};
    int rw,c,sop;
    rw = sip[3]+sip[0]*2;
    c = sip[2]+sip[1]*2;
    sop = sbox[sbno][rw][c]; //sop gives decimal value of S-Box Output
    for(;sop!=0;sop/=2)
        p[i--]=sop%2;
   }


void cmp_fun(int round)
   {
    int EP[]={4,1,2,3,2,3,4,1},i,epd[8];
    int slip[4],srip[4];
    int p[4]={0},p4[]={2,4,3,1},np[4];
    for(i=0;i<8;i++) // E/P Permutation
        epd[i]=r[EP[i]-1];
    for(i=0;i<8;i++)//Performing XOR with Key
        if(i<4)
            slip[i] = epd[i]^keys[round][i]; // usingKey1=>0
        else
            srip[i-4] = epd[i]^keys[round][i];
    sbox(slip,p,0,1);//Calling SBox 1, 0->SBOX 1
    sbox(srip,p,1,3);//Calling SBox 1, 1->SBOX 2
    for(i=0;i<4;i++) //P4 permutation
        np[i]=p[p4[i]-1];
    for(i=0;i<4;i++)
        l[i] = l[i]^np[i];
   }


void left_shift(int keyip[],int nob)
   {
    int t1,t2,i;
    while(nob>0)
           {
          t1=keyip[0],t2=keyip[5];
              for(i=0;i<9;i++)
         if(i<4)
                 keyip[i] =keyip[i+1];
             else if(i>4)
                     keyip[i] = keyip[i+1];
           keyip[4]=t1,keyip[9]=t2;
               nob--;
        }
    }


void Bin(int dec,int b[])
   {
      int i,a[8],j;
      for(i=0;i<8;i++)
        {
          while(dec!=0)
           {
             a[i]=dec%2;
             dec=dec/2;
             i++;
           }
          a[i]=0;
        }
      for(i=7,j=0;j<10;j++,i--)
        {
          if(i>=0)
         b[j]=a[i];
          else
         b[j]=0;
         }
   }


void ch_bin(unsigned char ch,int b[])
   {
      int i,a[8],j;
      int dec;
      dec=(int)ch;
      for(i=0;i<8;i++)
        {
          while(dec!=0)
            {
              a[i]=dec%2;
              dec=dec/2;
              i++;
             }
          a[i]=0;
        }
      for(i=7,j=0;j<8;j++,i--)
     b[j]=a[i];
   }


unsigned char bin_ch(int b[])
   {
      int i,j,p=1;
      int dec=0;
      unsigned char ch;
      for(i=7;i>=0;i--)
        {
          dec=dec+(b[i]*p);
          p=p*2;
        }
      ch=(unsigned char)dec;
      return ch;
   }


void pass_key(char *s,int key[])
   {
      int a[10],arr[10],ai[10],ar[10][10];
      int i,j,k;
      for(i=0;i<10;i++)
         {
            if(i<strlen(s))
          a[i]=(int)s[i];
            else
          a[i]=0;
            Bin(a[i],arr);
            for(k=0,j=0;k<10;k++,j++)
           ar[i][k]=arr[j];
         }
       k=0;
        for(i=0;i<10;i++)
           for(j=0;j<10;j++)
              if(i==j)
                {
                  key[k]=ar[i][j];
                  k++;
                 }
   }
    

void gen_keys(int key[])
   {
      int i,keyip[10];
      int p10[]={3,5,2,7,4,10,1,9,8,6},p8[]={6,3,7,4,8,5,10,9};
      
       for(i=0;i<10;i++) // Permutation P10
       keyip[i] = key[p10[i]-1];
       left_shift(keyip,1);     // Left Shifting (Array,No of bts)
       for(i=0;i<8;i++)             //Permuting P8 on key1
       keys[0][i] = keyip[p8[i]-1];// Key1 Generated!!
       left_shift(keyip,2);// Generating Key2 . .
       for(i=0;i<8;i++)
       keys[1][i] = keyip[p8[i]-1];// Key2 Generated!!
   }


void En_De(int pt[],int c)
   {
      int ip[]={2,6,3,1,4,8,5,7},ipi[]={4,1,3,5,7,2,8,6},t[8],i;
      for(i=0;i<8;i++)// Performing Permutation on input bits!!
      if(i<4)
         l[i]=pt[ip[i]-1];
      else
         r[i-4] = pt[ip[i]-1];
      cmp_fun(c);//Round 0+1 using key 0+1
      for(i=0;i<4;i++) //Swapping left & right
          r[i]=l[i]+r[i],l[i]=r[i]-l[i],r[i]=r[i]-l[i];
      cmp_fun(!c); // Round 1+1 wid key1+1 wid swapped bits
      for(i=0;i<8;i++)
      if(i<4)    
             t[i]=l[i];
      else    
             t[i]=r[i-4];
       for(i=0;i<8;i++)
       ct[i] = t[ipi[i]-1];
   }
      

void main()
    {
     int pt[8],i,j,choice,l;
     char s[10],name[20],target[20],pwd[20];
     char ch,chr,cha;
     int key[10],bin[8],key1[10];
    
     FILE *fin;
     FILE *fout;
    
     start:

     clrscr();    
     printf("\n\n\t\t\t");
     textcolor(11);
     cprintf("Program on Encryption and Decryption");
     printf("\n\n\n\t");
     textcolor(6);
     cprintf("0. To Exit !");
     textcolor(7);
     printf("\n\t1. encrypt the Text file ");
     printf("\n\t2. Decrypt the encrypted file");
     printf("\n\t3. Help");
     printf("\n\tEnter your choice :");
     scanf("%d",&choice);
     switch(choice)
      {
      case 1:
       {
         printf("\n\t Enter the Password \n\t");
         scanf("%s",&s);
         pass_key(s,key);//conversion of password to 10 bit key
         gen_keys(key); // Generating Keys key1 & key2
         printf("\n\nEnter The Path Of A File Which Is To Be Encrypted : \n\t");
     fflush(stdin);
     gets(name);
         fin=fopen(name,"r");     //Open TheInput File In A Binary Mode
         if(!fin)
           {                                                          //ShowErrorOccur If File Does Not Exist
         printf("Error In Openinig Of A File : \n\t");                 //Or AnyErrorOccurs
         printf("Re-Enter the file path.......\n\t");
         getch();
         goto start;
           }
         printf("Enter The New Encrypted File Name : \n\t");
     fflush(stdin);
     gets(target);
         fout=fopen(target,"w+");                         //Open TheOutPut File In A Binary Mode
         if(!fout)
           {
          fclose(fin);
         printf("Error In Opening Of Target File :\n\t"); //Show ErrorIfAny Error Occrs In Opening Of A File
         printf("RE-Enter the target file name......\n\t");
         getch();
         goto start;
           }
     fputs(s,fout);
         while(fin)
           {
         ch=fgetc(fin);
         if(ch==EOF)
           {
            fclose(fin);
            fclose(fout);
            break;
           }
         ch_bin(ch,bin);
         En_De(bin,0);
         chr=bin_ch(ct);
         fputc(chr,fout);
           }
         getch();
        goto start;
      }

    case 2:
       {
         printf("\n\nEnter The Path Of A File Which Is To Be decrypted : \n\t");
         fflush(stdin);
         gets(name);
         fin=fopen(name,"r");                              //Open TheInput File In A Binary Mode
         if(!fin)
           {                                      //ShowErrorOccur If File Does Not Exist
          printf("Error In Openinig requested File...... \n\t");
      printf("Re-Enter the File path......\n\t");
      getch();                //Or AnyErrorOccurs
          goto start;
           }
          printf("enter the length of password\n\t");
      scanf("%d",&l);
         fgets(s,l+1,fin);

         printf("\n\tEnter the password.......\n\t");
         BACK5:
      scanf("%s",&pwd);
         if(strcmp(s,pwd)==0)
         {
         pass_key(pwd,key);
         gen_keys(key); // Generating Keys key1 & key2
         printf("\nEnter The New decrypted File Name : \n\t");
         fflush(stdin);
     gets(target);
         fout=fopen(target,"w+");                         //Open TheOutPut File In A Binary Mode
         if(!fout)
           {
          fclose(fin);
          printf("Error In Opening Of Target File :\n\t");       //Show ErrorIfAny Error Occrs In Opening Of A File
          printf("Re-Enter the file name.......\n\t");
          getch();
          goto start;
           }
         while(fin)
      {
           cha=fgetc(fin);
           if(cha==EOF)
            {
             fclose(fin);
             fclose(fout);
             break;
            }
       ch_bin(cha,bin);
           En_De(bin,1);
       chr=bin_ch(ct);
       fputc(chr,fout);
      }
    }
       else
     {
        printf("\nre-enter the password\n\t");
        goto BACK5;
     }
     getch();
    goto start;
    }

    case 3:
     {
     printf("\n\n\n\t1. This program is to encrypt and decrypt the text file.");
     printf("\n\n\t2. enter the path for text file you wants to encrypt and decrypt.");
     printf("\n\n\t3. The program may not give correct results in fullsreen.");
     getch();
     goto start;
     }
    case 0:
    {
    clrscr();
    textcolor(14);
     cprintf("\n\n\n     --Thank U for using this software program-- ");
     printf("\n\n\n");
    getch();
      break;
    }
    default:
    textcolor(9);
    cprintf("\n       Invalid choice !");
    getch();
    textcolor(7);
    goto start;
     }
}

میخوام بدونم در چه حد برات مهمه امنیت رمزنگاری فایل ها؟
اهمتی نداره اینجا!این اصلا ربطی به اون برنامه مهمه نداره!خیلی ساده میخوام یه نوشته را از فایل بخونه کد کنه ذخیره کنه فایل دیگه و دوباره بخونه و دیکدش کنه!خیلی ساده میخوام باشه!متاسفانه فایلهارا فراموش کردم توی سی Sad
Hi this is my first time submitting to the C++ selection, anyway this is just a small basic code using XOR to encrypt a file anyway hope it maybe of some use.



یکی از راه ترین الگوریتم های انکریپت مربوط به xor میباشد سورس زیرتوسط c++ نوشته شده است بصورت پروژه هست

دانلود :


[attachment=196]
(05-26-2012، 07:54 PM)Amin_Mansouri نوشته: [ -> ]Hi this is my first time submitting to the C++ selection, anyway this is just a small basic code using XOR to encrypt a file anyway hope it maybe of some use.



یکی از راه ترین الگوریتم های انکریپت مربوط به xor میباشد سورس زیرتوسط c++ نوشته شده است بصورت پروژه هست

دانلود :
ممنون امین جان! rose rose rose