示例#1
0
void fileCrypt(char* filenameIn, char* password) { 
  int fileLen;
  int filenameLen = strlen(filenameIn);
  int passLen = strlen(password); 
  char *fileInputTemp, *fileInput, *fileOutput;
  char *filenameOut;
  
  fileInputTemp = readFile(filenameIn);
  fileLen = strlen(fileInputTemp);
  
  filenameOut = (char*) malloc(strlen(filenameIn) + 6);    
  fileInput  = (char*) malloc(passLen + fileLen + 1); 
  fileOutput = (char*) malloc(passLen + fileLen + 1); 
    
  if (strstr(filenameIn, ".crpt" )) {
    printf("Running decryption protocol on %s!\n", filenameIn);
    strcpy(fileInput, fileInputTemp);
    
    XORCrypt(fileInput, fileOutput, password);			
    strcpy(fileInput, fileOutput);	
    subDecodeString(fileInput, fileOutput, 6); 		  		
    strcpy(fileInput, fileOutput);
    transDecodeString(fileInput, fileOutput);
    
    memset(fileInput, 0, passLen+1);
    strncpy(fileInput, fileOutput, passLen);
    if (strcmp(fileInput, password)) {
      printf("This file cannot be decrypted with your password. You do not have authority!\n");
    } else {
      printf("File decrypted. Writing back data!\n");
      memset(filenameOut, 0, filenameLen);
      strncpy(filenameOut, filenameIn, filenameLen-5);
      writeFile(filenameOut, &fileOutput[passLen]);
      remove(filenameIn);
    }
  } else {
    printf("Running Encryption protocol on %s!\n", filenameIn);
    sprintf(fileInput, "%s%s", password, fileInputTemp); 
    
    transEncodeString(fileInput, fileOutput);
    strcpy(fileInput, fileOutput);	  
    subEncodeString(fileInput, fileOutput, 6); 		  
    strcpy(fileInput, fileOutput);	  
    XORCrypt(fileInput, fileOutput, password);
    
    sprintf(filenameOut, "%s.crpt", filenameIn);
    printf("File encrypted. Writing back data!\n");
    writeFile(filenameOut, fileOutput);
    remove(filenameIn);
  }
  free (fileInputTemp);
  free (fileInput);
  free (fileOutput);
}
//us -> client
void OSIEncryption::EncryptForClient( const BYTE *in, BYTE *out, int len )
{
	XORCrypt( in, out, len );
}
//server -> us
void OSIEncryption::DecryptFromServer( const BYTE *in, BYTE *out, int len )
{
	XORCrypt( in, out, len );
}