FlyFar

Base64.cpp

Mar 26th, 2024
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.78 KB | Cybersecurity | 0 0
  1. #define WIN32_LEAN_AND_MEAN
  2. #include <stdio.h>
  3. //base64 encoding algorithm. Used for the massmailer's attachment
  4. void EncodeBase64(char *strFile, char *szPath)
  5. {
  6.     char Alphabet[64]={ 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P',
  7.                         'Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f',
  8.                         'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v',
  9.                         'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/' };
  10.  
  11.     unsigned char bytes[3];
  12.     unsigned int incr,total,total1=0;
  13.     unsigned char char1;
  14.  
  15.  
  16.     FILE* fin = fopen(strFile,"rb");
  17.     if(fin==NULL)return;
  18.     FILE* fout = fopen(szPath,"w");
  19.     incr = -1;
  20.     total = 0;
  21.     while(!feof(fin))
  22.     {
  23.         total1++;
  24.         incr++;
  25.         if(incr==3)
  26.         {
  27.             incr = -1;
  28.             char1 = bytes[0] >> 2;
  29.             fprintf(fout,"%c",Alphabet[char1]);
  30.             char1 = ((bytes[0] << 6) | (bytes[1] >> 2));
  31.             char1 = char1 >> 2;
  32.             fprintf(fout,"%c",Alphabet[char1]);
  33.             char1 = bytes[1] << 4;
  34.             char1 = char1 >> 2;
  35.             char1 = char1 | (bytes[2] >> 6);
  36.             fprintf(fout,"%c",Alphabet[char1]);
  37.             char1 = bytes[2] << 2;
  38.             char1 = char1 >> 2;
  39.             fprintf(fout,"%c",Alphabet[char1]);
  40.             total+=4;
  41.         }
  42.         else fscanf(fin,"%c",&bytes[incr]);
  43.         if(total==76)
  44.         {
  45.             total = 0;
  46.             fprintf(fout,"\n");
  47.         }
  48.     }
  49.  
  50.    
  51.     if (incr==1)
  52.     {
  53.         char1 = bytes[0] >> 2;
  54.         fprintf(fout,"%c",Alphabet[char1]);
  55.         char1 = ((bytes[0] << 6) | 0);
  56.         char1 = char1 >> 2;
  57.         fprintf(fout,"%c==",Alphabet[char1]);
  58.     }
  59.     if (incr==2)
  60.     {
  61.         char1 = bytes[0] >> 2;
  62.         fprintf(fout,"%c",Alphabet[char1]);
  63.         char1 = ((bytes[0] << 6) | (bytes[1] >> 2));
  64.         char1 = char1 >> 2;
  65.         fprintf(fout,"%c",Alphabet[char1]);
  66.         char1 = bytes[1] << 4;
  67.         char1 = char1 >> 2;
  68.         char1 = char1 | 0;
  69.         fprintf(fout,"%c=",Alphabet[char1]);
  70.     }
  71.     fclose(fin);
  72.     fclose(fout);
  73.  
  74. }
  75.  
Add Comment
Please, Sign In to add comment