Advertisement
Guest User

fhash.inc

a guest
Apr 19th, 2010
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 2.13 KB | None | 0 0
  1.  
  2. /*
  3.  *
  4.  *      (c) Copyright by jC-Team 2010
  5.  *  All rights reserved / Âñå ïðàâà çàùèùåíû
  6.  *
  7.  */
  8.  
  9. #define crypt(%0) \
  10.     for ( new c = 1; %0[c] != 0; c++ ) %0[c] -= %0[0] / ( 10 + c ); %0[0]--
  11.  
  12. #define decrypt(%0) \
  13.     %0[0]++; for ( new c = 1; %0[c] != 0; c++ ) %0[c] += %0[0] / ( 10 + c )
  14.  
  15. enum x_error {
  16.     /*
  17.         Если ошибки не обнаружено, то функция вернёт
  18.         число из no_error.
  19.     */
  20.     no_error                =  1, //
  21.     /*
  22.         Если файл не обнаружен, то функция вернёт
  23.         число из file_no_exist.
  24.     */
  25.     file_no_exist           = -1, //
  26.     /*
  27.         Если размер файла больше размера буфера, то функция вернёт
  28.         число из file_long_length.
  29.     */
  30.     file_long_length        = -2 //
  31. };
  32.  
  33. enum x_method {
  34.     /*
  35.         Метод шифровки файла.
  36.     */
  37.     file_crypt              = 1, //
  38.     /*
  39.         Метод дешифровки файла.
  40.     */
  41.     file_decrypt            = 2, //
  42. };
  43.  
  44. const
  45.     /*
  46.         Максимальный размер буфера, если длина файла будет больше чем
  47.         размер буфера, функция вернёт ошибку.
  48.     */
  49.     MAX_BUFFER_SIZE         = 1024,
  50.     bool:UTF_8                   = false;
  51.        
  52.  
  53. new
  54.     File: x_File,
  55.     x_buffer[ MAX_BUFFER_SIZE ],
  56.     x_idx                   = 0;
  57.  
  58.  
  59. stock fhash(name[], hash_method = x_method:file_crypt) {
  60.     x_File=fopen(name, io_readwrite);
  61.     if(!fexist(name)) {
  62.         return x_error:file_no_exist;
  63.     }
  64.     if(flength(x_File) > MAX_BUFFER_SIZE) {
  65.         return x_error:file_long_length;
  66.     }
  67.     for(x_idx=0; x_idx<flength(x_File); x_idx++) {
  68.         x_buffer[x_idx]=fgetchar(x_File, x_idx, UTF_8);
  69.     }
  70.     fclose(x_File);
  71.     fremove(name);
  72.    
  73.     switch(hash_method) {
  74.         case file_crypt:    {crypt(x_buffer);}     // Любая ваша шифрующая функция!
  75.         case file_decrypt:  {decrypt(x_buffer);}   // Любая ваша дешифрующая функция!
  76.     }
  77.    
  78.     x_File=fopen(name, io_readwrite);
  79.     for(x_idx=0; x_idx<strlen(x_buffer); x_idx++) {
  80.         fputchar(x_File, x_buffer[x_idx], UTF_8);
  81.     }
  82.     fclose(x_File);
  83.     return x_error:no_error;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement