当前位置:   article > 正文

基于随机数的对称数据加密_wenben1

wenben1

这个加密算法是一个简单,适合于c语言新手的算法。

算法可以加密任何符号,包括汉字,空格

目录

1.加密原理

 2.加密代码实现

3.解密原理

             4.解密代码实现

5.总结


1.加密原理

其实很简单,众所周知每一个字符都有一个其所对应的ASCII码,所以只需要将要加密的文本转化为一串ASCII码,然后对这一串数据进行操作即可,这里用的是rand函数。当然我们可以用time函数让每次的随机数不一样。

2.加密代码实现

  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <stdlib.h>
  4. long miwen = time(0);//生成种子即密匙
  5. int jiami(long *wenben,int shu)//加密函数
  6. {
  7. srand(miwen);
  8. int mijia[99], i;
  9. for (i = 0; i <= 98; i++)
  10. {
  11. mijia[i] = rand() % 21;//生成随机数组
  12. }
  13. for (i = 0; i <= shu-2; i++)
  14. {
  15. wenben[i] = wenben[i] + mijia[i];//加密
  16. }
  17. return 0;
  18. }
  19. int main()
  20. {
  21. char wenben[99];
  22. int i = 0,j=0,aa=1;
  23. for (j = 0; j < 99; j++)// 文本初始化
  24. {
  25. wenben[j] = '|';
  26. }
  27. j = 0;
  28. long wenbenbian[99] = {0};//密文初始化
  29. printf("即将加密的文本:");
  30. do //接收文本
  31. {
  32. wenben[i] = getchar();
  33. putchar(wenben[i]);
  34. i++;
  35. } while (wenben[i-1]!='\n');
  36. i = 0;
  37. do //转化文本为密文
  38. {
  39. wenbenbian[i]=wenben[i];
  40. i++;
  41. } while (i!=98);
  42. printf("\n");
  43. i = 0;
  44. do //分析文本数量
  45. {
  46. if (wenbenbian[i] == '|')
  47. {
  48. j = i-1;
  49. aa = 0;
  50. }
  51. i++;
  52. } while (aa);
  53. jiami(wenbenbian, j);//加密
  54. printf("\n");
  55. printf("密匙:%ld\n", miwen);
  56. i = 0;
  57. printf("密文:");
  58. do
  59. {
  60. printf("%ld",wenbenbian[i]);
  61. printf(" ");
  62. i++;
  63. } while (i!=j);
  64. while (1);
  65. }

3.解密原理

其实就是加密的逆运算,不过有个处理密文的过程。

4.解密代码实现

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int main()
  4. {
  5. int i=0,j=0,aa=1;
  6. long mishi;
  7. char wenben[99], wenben2[99];
  8. int wenben1[99] = {0}; //初始化密文
  9. for (i = 0; i < 99; i++) //初始化文本
  10. {
  11. wenben2[i] = ' ';
  12. }
  13. i = 0;
  14. printf("输入密文:");
  15. do // 提取密文
  16. {
  17. wenben[i] = getchar();
  18. putchar(wenben[i]);
  19. if (wenben[i] == ' '|| wenben[i] == '\n')
  20. {
  21. if (wenben[i] == '\n')
  22. {
  23. aa = 0;
  24. }
  25. wenben1[j] = atoi(wenben);
  26. j++;
  27. i = -1;
  28. }
  29. i++;
  30. } while (aa);
  31. printf("\n");
  32. printf("输入密匙:");
  33. scanf_s("%ld",&mishi);
  34. srand(mishi); //种子即密匙
  35. int mijia[99];
  36. for (i = 0; i <= 98; i++)
  37. {
  38. mijia[i] = rand() % 21;
  39. }
  40. for (i = 0; i <= j-2; i++) //解密
  41. {
  42. wenben1[i] = wenben1[i] - mijia[i];
  43. }
  44. for (i = 0; i <= j; i++)
  45. {
  46. wenben2[i] = wenben1[i];
  47. }
  48. printf("文本:%s", wenben2);
  49. while (1);
  50. }

5.总结

这只是一个适合初学者的小程序,可以作为无聊时的解闷,实用性可能是有点的,不过加密量和效率都很低。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/895811
推荐阅读
相关标签
  

闽ICP备14008679号