<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. C語言

    C語言如何使用異或(xor)加密或解密文件

    時間:2025-03-26 13:45:19 C語言 我要投稿
    • 相關推薦

    C語言如何使用異或(xor)加密或解密文件

      C語言使用異或(xor)函數可以加密或解密文件你知道嗎?你知道C語言如何使用異或(xor)加密或解密文件嗎?下面是小編為大家帶來的關于C語言如何使用異或(xor)加密或解密文件的知識,歡迎閱讀。

      C語言如何使用異或(xor)加密或解密文件

      xor_encrypt.c

      /** XOR 加密/解密文件 */

      #define TRUE 1

      #define FALSE 0

      #include

      #include

      #include

      #include // 如果在/usr/include/找不到,可以在/usr/include/sys/復制過去

      // 輸出信息

      void msg_log(char *str);

      // 判斷文件是否存在

      int file_exists(char *filename);

      // 主函數

      //更多精彩內容:http://www.bianceng.cn/Programming/C/

      int main(int argc, char *argv[]){

      int keylen, index=0;

      char *source, *dest, *key, fBuffer[1], tBuffer[20], ckey;

      FILE *fSource, *fDest;

      source = argv[1]; // 原文件

      dest = argv[2]; // 目的文件

      key = argv[3]; // 加密字串

      // 檢查參數

      if(source==NULL || dest==NULL || key==NULL){

      msg_log("param error usage:xor_encrypt source dest key e.g ./xor_encrypt o.txt d.txt 123456");

      exit(0);

      }

      // 判斷原文件是否存在

      if(file_exists(source)==FALSE){

      sprintf(tBuffer,"%s not exists",source);

      msg_log(tBuffer);

      exit(0);

      }

      // 獲取key長度

      keylen = strlen(key);

      fSource = fopen(source, "rb");

      fDest = fopen(dest, "wb");

      while(!feof(fSource)){

      fread(fBuffer, 1, 1, fSource); // 讀取1字節

      if(!feof(fSource)){

      ckey = key[index%keylen]; // 循環獲取key

      *fBuffer = *fBuffer ^ ckey; // xor encrypt

      fwrite(fBuffer, 1, 1, fDest); // 寫入文件

      index ++;

      }

      }

      fclose(fSource);

      fclose(fDest);

      msg_log("success");

      exit(0);

      }

      //輸出信息

      void msg_log(char *str){

      printf("%s ", str);

      }

      // 判斷文件是否存在

      int file_exists(char *filename){

      return (access(filename, 0)==0);

      }

      這張圖如果使用php來處理需要 2秒 左右,但用C處理只需要 130毫秒。

      fdipzone@ubuntu:~/C$ gcc -o xor_encrypt xor_encrypt.c

      fdipzone@ubuntu:~/C$ time ./xor_encrypt 1280.jpg 1280en.jpg '@#$%^&*()_DFGHJKadsklfjasdf'

      success

      real 0m0.139s

      user 0m0.060s

      sys 0m0.070s


    【C語言如何使用異或(xor)加密或解密文件】相關文章:

    C語言文件的使用方法08-01

    PHP如何使用AES加密算法進行數據加密和解密06-07

    C語言EOF如何使用08-29

    C語言文件08-28

    C語言中如何使用sscanf08-27

    如何使用C語言數組指針09-14

    BIOS設置的加密與解密07-04

    C語言頭文件如何避免重復包含06-01

    C語言的文件概念07-18

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人