0


简单的文件加密C语言代码实现

加密算法通过对原文的每个字符进行异或运算来进行加密;解密时同样进行异或处理即可恢复到原文。

代码实现如下

  1. #include<stdlib.h>
  2. #include <stdio.h>
  3. int getfilesize(char *path)
  4. {
  5. FILE *pf = fopen(path, "r");
  6. if (pf == NULL)
  7. {
  8. return -1;
  9. }
  10. else
  11. {
  12. fseek(pf, 0, SEEK_END);
  13. int length = ftell(pf);
  14. return length;
  15. }
  16. }
  17. void EncryptFile(char *oldpath, char *newpath)
  18. {
  19. int i = 0;
  20. FILE *pfr, *pfw;
  21. pfr = fopen(oldpath, "rb");
  22. pfw = fopen(newpath, "wb");
  23. if (pfr == NULL || pfw == NULL)
  24. {
  25. fclose(pfr);
  26. fclose(pfw);
  27. return;
  28. }
  29. else
  30. {
  31. int length = getfilesize(oldpath);
  32. char *p = (char *)malloc(length*sizeof(char));
  33. fread(p, sizeof(char), length, pfr);
  34. for (i = 0; i < length; i++)
  35. {
  36. p[i] ^= 'A';
  37. }
  38. fwrite(p, sizeof(char), length, pfw);
  39. fclose(pfr);
  40. fclose(pfw);
  41. }
  42. }
  43. void DecryptFile(char *oldpath, char *newpath)
  44. {
  45. int i = 0;
  46. FILE *pfr, *pfw;
  47. pfr = fopen(oldpath, "rb");
  48. pfw = fopen(newpath, "wb");
  49. if (pfr == NULL || pfw == NULL)
  50. {
  51. fclose(pfr);
  52. fclose(pfw);
  53. return;
  54. }
  55. else
  56. {
  57. int length = getfilesize(oldpath);
  58. char *p = (char *)malloc(length*sizeof(char));
  59. fread(p, sizeof(char), length, pfr);
  60. for (i = 0; i < length; i++)
  61. {
  62. p[i] ^= 'A';
  63. }
  64. fwrite(p, sizeof(char), length, pfw);
  65. fclose(pfr);
  66. fclose(pfw);
  67. }
  68. }
  69. #if 0
  70. void main()
  71. {
  72. // 原始文件的路径
  73. char *oldpath = "log.txt";
  74. // 加密后的路径
  75. char *newpath = "log-EecryptFile.dat";
  76. // 解密后的路径
  77. char *newDecryptFilepath = "log-DecryptFile.txt";
  78. EncryptFile(oldpath, newpath);
  79. DecryptFile(newpath, newDecryptFilepath);
  80. }
  81. #endif
标签: 安全 c语言 算法

本文转载自: https://blog.csdn.net/L888666Q/article/details/129295532
版权归原作者 L888666Q 所有, 如有侵权,请联系我们删除。

“简单的文件加密C语言代码实现”的评论:

还没有评论