⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sfile.c

📁 加解密包
💻 C
字号:
/**   revision : 1.2.0       This code works on:   Solaris 2.6 and above, Linux, Win32, IBM OS/390   Dependency: sfile_api.h, lib_sfile_XXX.a      purpose:  create a "sfile" executable use following functions:      int PBE_EncryptFile(char* passwd,const char* in,const char* out);   int PBE_DecryptFile(char* passwd,const char* in,const char* out);**/#include <stdio.h>#include <stdlib.h>#include <string.h>#include "sfile_api.h"#define MAX_PASS_LEN 128#define MAX_FILE_LENGTH 256void Usage();int main(int argc, char* argv[]) {  char passwd[MAX_PASS_LEN],passwd1[MAX_PASS_LEN];  char sFileName[MAX_FILE_LENGTH];  FILE *fp;  int nFileNameLength;  int i,flag;  if(argc < 4) {    Usage();    return -1;  }  if(argv[1][0] != '-' || 2 != strlen(argv[1]) ) {    Usage();    return -1;  }  switch(argv[1][1]) {  case 'e':    if( argc != 5 && argc != 6 && argc != 7 && argc != 8 ) {      Usage();      return -1;				    }    flag = -1;    /* app -e -in sourcefile -p password */    if ( argc == 6 && argv[2][0] == '-' && argv[2][1] == 'i' && argv[2][2] == 'n' 	 && argv[4][0] == '-' && argv[4][1] == 'p'  ) {      if ( strlen(argv[5]) < 8 ) {	printf("Password must be at least 8 chars.\n");	return -1;      }      strcpy(passwd,argv[5]);				      /* Make up the target file by appending .sealed */      strcpy(sFileName,argv[3]);      strcat(sFileName,".sealed");      flag = 0;    }    /* app -e -in sourcefile -p       */    if ( argc == 5 && argv[2][0] == '-' && argv[2][1] == 'i' && argv[2][2] == 'n' 	 && argv[4][0] == '-' && argv[4][1] == 'p'  ) {            for (i=0;i<3;i++) {	printf("Please input the password (At least 8 chars):");	scanf("%s",passwd);	printf("Please input the password again:");	scanf("%s",passwd1);	if ( strcmp(passwd,passwd1) == 0 && i < 3 && strlen(passwd) >= 8 )	  break;      }      if ( i == 3 )	return -1;            strcpy(sFileName,argv[3]);      strcat(sFileName,".sealed");      flag = 0;    }    /* app -e -in sourcefile -out targetfile -p       */    if ( argc == 7 && argv[2][0] == '-' && argv[2][1] == 'i' && argv[2][2] == 'n' 	 && argv[4][0] == '-' && argv[4][1] == 'o' && argv[4][2] == 'u'  && argv[4][3] == 't' 	 && argv[6][0] == '-'  && argv[6][1] == 'p'  ) {            for (i=0;i<3;i++) {	printf("Please input the password (At least 8 chars):");	scanf("%s",passwd);	printf("Please input the password again:");	scanf("%s",passwd1);	if ( strcmp(passwd,passwd1) == 0 && i < 3 && strlen(passwd) >= 8 )	  break;      }      if ( i == 3 )	return -1;      strcpy(sFileName,argv[5]);      flag = 0;    }    /* app -e -in sourcefile -out targetfile -p password      */    if ( argc == 8 && argv[2][0] == '-' && argv[2][1] == 'i' && argv[2][2] == 'n' 	 && argv[4][0] == '-' && argv[4][1] == 'o' && argv[4][2] == 'u'  && argv[4][3] == 't' 	 && argv[6][0] == '-'  && argv[6][1] == 'p'  ) {            if ( strlen(argv[7]) < 8 ) {	printf("Password must be at least 8 chars.\n");	return -1;      }      strcpy(sFileName,argv[5]);      strcpy(passwd,argv[7]);				      flag = 0;    }    if (flag == 0) {      /* Let's do the encryption work */       fp=fopen(argv[3],"rb");      if ( fp == NULL ) {	printf("Can't open the source file!\n");	return -1;      }      fclose(fp);            flag=PBE_EncryptFile(passwd,argv[3],sFileName);      if (flag == 0) {	printf("Encrypt successfully!\n");	return 0;      } else {	printf("Encrypt failed!\n");	return -1;      }    }else{      Usage();      return flag;    }    break;    /**************** Decryption ****************/  case 'd':    if( argc != 5 && argc != 6 && argc != 7 && argc != 8 ) {      Usage();      return -1;				    }    /*   app -d -in encryptedfile -p          */    if ( argc == 5 && argv[2][0] == '-' && argv[2][1] == 'i' && argv[2][2] == 'n' 	 && argv[4][0] == '-' && argv[4][1] == 'p'  ) {      printf("Please input the password :");      scanf("%s",passwd);            nFileNameLength=strlen(argv[3]);      strcpy(sFileName,argv[3]);            if ( sFileName[nFileNameLength-7] == '.' && sFileName[nFileNameLength-6] == 's' && 	   sFileName[nFileNameLength-5] == 'e' && sFileName[nFileNameLength-4] == 'a' && 	   sFileName[nFileNameLength-3] == 'l' && sFileName[nFileNameLength-2] == 'e' && 	   sFileName[nFileNameLength-1] == 'd' ) {		sFileName[nFileNameLength-7]='\0';      } else {	printf("Expect source file with .sealed extension!\n\n");	return -1;      }    }    /*   app -d -in encryptedfile -p password         */    if ( argc == 6 && argv[2][0] == '-' && argv[2][1] == 'i' && argv[2][2] == 'n' 	 && argv[4][0] == '-' && argv[4][1] == 'p'  ) {      strcpy(passwd,argv[5]);            nFileNameLength=strlen(argv[3]);      strcpy(sFileName,argv[3]);      if ( sFileName[nFileNameLength-7] == '.' && sFileName[nFileNameLength-6] == 's' && 	   sFileName[nFileNameLength-5] == 'e' && sFileName[nFileNameLength-4] == 'a' && 	   sFileName[nFileNameLength-3] == 'l' && sFileName[nFileNameLength-2] == 'e' && 	   sFileName[nFileNameLength-1] == 'd' ) {	sFileName[nFileNameLength-7]='\0';      } else {	printf("Expect source file with .sealed extension!\n\n");	return -1;      }    }    /*   app -d -in encryptedfile -out targetfile -p */    if ( argc == 7 && argv[2][0] == '-' && argv[2][1] == 'i' && argv[2][2] == 'n' 	 && argv[4][0] == '-' && argv[4][1] == 'o' && argv[4][2] == 'u'  && argv[4][3] == 't' 	 && argv[6][0] == '-' && argv[6][1] == 'p'  ) {      printf("Please input the password :");      scanf("%s",passwd);      strcpy(sFileName,argv[5]);    }    /*  app -d -in encryptedfile -out targetfile -p password  */    if ( argc == 8 && argv[2][0] == '-' && argv[2][1] == 'i' && argv[2][2] == 'n' 	 && argv[4][0] == '-' && argv[4][1] == 'o' && argv[4][2] == 'u'  && argv[4][3] == 't' 	 && argv[6][0] == '-' && argv[6][1] == 'p'  ) {      strcpy(passwd,argv[7]);      strcpy(sFileName,argv[5]);    }    /* Let's do the work */    fp=fopen(argv[3],"rb");	    if ( fp == NULL ) {      printf("Can't open the source file %s\n",argv[3]);      return -1;    }    fclose(fp);        fp=fopen(sFileName,"wb");	    if ( fp == NULL ) {      printf("Can't open the target file %s\n",sFileName);      return -1;    }    fclose(fp);        flag=PBE_DecryptFile(passwd,argv[3],sFileName);    if ( flag == 0 ) {      printf("Decrypt successfully!\n");      return 0;    } else {      printf("Decrypt failed!\n");      return flag;    }  }  return -1;}void Usage() {  printf("  Usage:\n");  printf("  -e -in originalfile  [-out targetfile] -p [password]   ;to encrypt file\n");  printf("  -d -in encryptedfile [-out targetfile] -p [password]   ;to decrypt file\n");}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -