关于用c语言编写加密器

来源:互联网 发布:淘宝差评有什么影响 编辑:程序博客网 时间:2024/05/17 09:12

关于用c语言编写加密器——John_chen

想想自己,也学习了一个学期的c语言了,所以我想做一个自己早就想做的小软件了,小小的私人加密器,当然不是我们书上教我们做的那个了,我们还是自己考虑算法和怎么逆向实现解密,当然我做的这个版本是一个基础版本,以后我会进一步的加强它的功能,比如说是什么解密时的输入的不便(这是我感觉这个程序中的最大的缺陷),而且我还是准备实现txt文本等文件的导入功能,这是很重要的,要不这个程序和书上一样,没太大的变化和实用性,实用性是编程最重要的。好了,不说废话了,对了,不是电脑系的也要学习c语言哦~~~可以看看,当是消遣咯~(*^__^*) 嘻嘻……

http://u.115.com/file/f7fdd1dd9d   源代码下载

  个人加密器2.0.exe  http://u.115.com/file/f77d052457 程序已更新到2.0

首先,我们要考虑怎么来实现这个程序的大概思路。恩,我们是要有两个主要功能的,就是加密和解密,怎么来区别呢?我想了两种方法:

1.   可以通过vc++的编译器获得程序启动时候的参数,这好像有点深奥,但是你如果去Google上面查查资料也就不怎么难了。这种方法适用于有一个主程序调用时用,这里我就不用了~~~

2.   可以通过输入参数来搞定,就是像这样:
图片

这样我们就可以控制两种不同的模式了,O(_)O~

      然后我们来想想怎么实现加解密。而我自己设计的加密方式是通过密码来加密,这是我想到的比较保险的,通过输入密码在经过一些运算得到我们加密的结果。在运算的时候我们可以加入自己喜欢的一些数字来进行计算,这是我们的个人加密器吗,O(_)O~。解密就是这样的啦,我们通过输入加密后的字符后的字符,然后输入密码在进行字符的解密。主要的思路就是这样了,我先发代码:(这里我用的是visual studio 2008编译的,也就是vc++2008编译器编译的,其他的编译器可能还是点区别,但是大家其实只是要把申明语句改动一下就好了,这里我没用什么vc++的技术,只要改成

#include <stdio.h>,再把int_tmain(int argc,_tchar*argv[])改成void main()即可

#include "stdafx.h"  //改成#include <stdio.h>

#include "iso646.h"//删除

int ret[100];

 

int _tmain(int argc, _TCHAR* argv[])//改成void main()

{    char put[100];

     int mima=10;

      int choise;

      int i=0;

      long c=0;

      long put2[100];

     int calculate_1(char protect[100],long password);

      void calculate_2(long result[100],long password);

      int number;//以上都是声明语句

         printf("输入你想选择的模式!/n1为加密字符,为解密字符!!!/n");

     scanf("%d",&choise);//选择语句

      if(choise==1)//判断语句,看看是不是加密模式

 { printf("输入你需加密的的字符串!/n");//输入语句,输入你要加密的字符语句。注意,暂时不     

//支持符号,到时候可以直接导入txt文本等文件

          scanf("%s",put);

          printf("输入你想要的密码,请小于4位数。");    //密码输入

          scanf("%d",&mima);

          number=calculate_1(put,mima);

          for(choise=0;choise<number;choise++)

               printf(" %d",ret[choise]);

      }

      else if (choise==2)                                //解密文件段

      {printf("请输入字符长度!!/n");

          scanf("%d",&i);

      for(choise=0;choise<i;choise++)

      {   printf("请输入加密数字,输入一个数按一次回车,-_-|||这个功能没做的太好/n");

          scanf("%d",&c);

         put2[choise]=c;

      }

      put2[i]='/0';

      printf("请输入解密密码!!/n");

      scanf("%d",&mima);

      calculate_2(put2,mima);

      }

      Else                                               //为人性化设计的容错语句

          printf("你输入的数值是%d ,不属于本程序的控制范围!/n",choise);

Sleep(INFINITE);                                        //1.1版加入的人性化设计

     return 0;

}

 

int calculate_1(char protect[100],long password)         //子函数1----加密

{       int num=41;

         int num2=32;

         int char1;

         int i=0;

         for(i=0;protect[i]!='/0'&&protect[i]!=0;i++)

         {    char1=protect[i];

              char1=char1^num;

              char1=char1+32;

              char1=char1*password ;   //以上是加密计算,我数学不大好,下次再仔细考虑看看算法

              ret[i]=char1;           //存到数组中               

         }

         return i;                    //这里我用的是返回后输出,也可以直接在子函数输出

}

 

void calculate_2(long result[100],long password)          //子函数2---解密

{        int num=41;

         int num2=32;

         int char1;

         int i=0;

              for(i=0;result[i]!='/0'&&result[i]!=0;i++)

         {    char1=result[i];

              char1=char1/password;

              char1=char1-32;

              char1=char1^num;                        //以上是解密的逆运算

              printf("%c",char1);                    //这里我就直接输出了

              }

}

       这个程序当时我想应该不会太难编成功,但是实际中我还是高了不少的时间的,就是有些地方的实现还是有些麻烦,所以我也想好好改进一下这个程序,加入几个实用的功能,我也会更新程序,写一些后续的文章,至于下载源代码,和源程序请到我的网盘中下载(在上面),最后贴两张效果图,(*^__^*) 嘻嘻……

对了,程序有什么地方有问题,希望大家留一下言,谢谢~~~

图片

图片

 

原创粉丝点击