找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 23529|回复: 7
打印 上一主题 下一主题
收起左侧

C语言数字密码加密程序

[复制链接]
跳转到指定楼层
楼主
ID:71922 发表于 2015-1-11 01:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 liuyuxi 于 2015-1-11 01:54 编辑

  (╯▽╰)╭断网的日子还蛮不错,啊..终于可以静下心来学点正经的东西了(自我安慰..),快半年没接触C语言了,好像只学到了第四章 流程控制,郁闷,找了半天也没找那本《C语言开发入门与编程实战》(强烈推荐珍藏!!!)。复习一下,试着编写一个能对数字进行加密解密的程序,哈哈,看来我以前学的蛮认真的.....写完了后总觉得好像少了什么东西,哈...现在的实用软件一般都要钱,需要付钱才能得到序列号(注册码)才能解除限制..干脆给它加上这个功能,虽然这个的程序不怎么实用,练习一下....幸亏我接触过软件破解技术..花了N个小时终于把这个功能编写完成了....每一句代码都有注释方便各位了解程序
作品名称:数字密码加密程序
作品目的:增加对条件指令、循环指令的了解
作品功能:实现注册验证及对数字进行加密、解密功能
作品缺陷:程序判断用户的选择只能用数字否则出错(尝试用过char类型),只能加密9位数字否则不能正确解密(BUG与算法无关),选择一个功能后必须重启程序才能再次选择另一种功能同时需要重新输入序列号,以上原因尚不明确!⊙﹏⊙b"),希望各位指教
程序界面:
  1. 程序源代码:(编译环境为开源软件DEV-C++ 4.9.9.2 多国语言版)

  2. *********************************源代码****************************************
  3. #include<stdio.h>/*加载包含基本输入输出函数头文件*/

  4. #include<stdlib.h>/*加载标准函数库头文件*/

  5. int main()/*声明主函数*/

  6. {

  7.    int a,i=3;/*声明整数变量a、i,并把赋值3给i*/

  8.    printf("\n\n   愿结交对C语言深感兴趣并研究过C语言的朋友\n   若有任何建议或愿共同探讨请联系QQ:0000000000\n   本程序,采用垃圾算法,纯属练习作品,各位不必当真。");

  9. printf("\n\n作品名称:数字密码加密程序\n\n作品目的:增加对条件指令、循环指令的了解\n\n作品功能:实现注册验证及对数字进行加密、解密功能\n\n作品缺陷:程序判断用户的选择只能用数字否则出错(尝试用过char类型),只能加密\n          9位数字否则不能正确解密(此BUG与算法无关),每选择一次功能都必须重\n          新选择一个功能后必须重启程序才能再次选择另一种功能同时需要重新输\n          入序列号,以上原因尚不明确!⊙﹏⊙b汗,希望各位能指教。");

  10.    printf("\n\n   O(∩_∩)O哈哈~,请选择所需要的功能:\n\n 1:加密(目前只支持9位任意数字,原因至今不明  (#‵′)凸\n\n 2:解密(只对本程序加密的密文有效)\n\n 0:退出\n\n  ");

  11.    scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/



  12. while(a>2)/*设定循环条件,达到输入错误选项即可循环执行确认选择功能指令*/

  13. {

  14.            printf("\n\n   O(∩_∩)O哈哈~,不能乱选哦,请再次认真选择所需要的功能:\n\n 1:加密(目前只支持9位任意数字,原因至今不明  (#‵′)凸\n\n 2:解密(只对本程序加密的密文有效)\n\n 0:退出\n\n  ");

  15.    scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/

  16.            }

  17.    if(a==1)/*判断变量a是否等于1,条件成立则执行下面的指令,否则跳过下面的指令*/

  18.    {

  19.    printf("\n   (*^__^*) 欢迎使用本加密程序(注:试用版只能使用三次)\n");/*显示说明*/

  20.    printf("请输入序列号:\n\n  ");/*显示说明*/

  21.    scanf("%d",&a);/*读取用户所输入的序列号并赋值给变量a*/

  22.    if(a!=0000000000)/*若用户所输入的序列号不等于0000000000则执行下面的指令,否则跳过下面的指令*/

  23.    {

  24.   /*这段为未注册限制代码↓↓*/

  25.     while(i!=0)/*循环语句,设定条件为3次,由声明变量时确定,达到三次后跳出循环停止运行算法*/

  26.    {

  27.     printf("\n请输入一组需加密的数字(未注册)\n\n  ");/*显示说明*/

  28.     scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/

  29.     a=a+100000;/*进行加密算法↓↓*/

  30.     a=a+100009;

  31.     a=a+100052;

  32.     a=a+100878;

  33.     a=a+108546;

  34.     a=a+113545;

  35.     a=a+314123;/*进行加密算法↑↑*/

  36.     i--;/*运行算法一次则i减1,达到三次后满足循环条件即运行3次算法,则i=3-3=0*/

  37.     printf("\n\n~\a\(≧▽≦)/~恭喜,已完成加密!密文为:%d(还有%d次使用权)\n\n",a,i);/*算法完成输出密文并提醒使用次数*/

  38.     system("pause");/*程序挂起命令*/

  39. }

  40. printf("\n\a\a\a   ╮(╯▽╰)╭对不起,您使用的次数已达到试用版的上限!\n\n"); /*警告用户*/

  41. printf("\n\n\nO(∩_∩)O哈哈~,告诉你一个秘密哈,若想再次使用可以再次运行本程序,照样\n还可以使用三次。不过,如果你这样做的话,也只能说明你笨╮(╯▽╰)╭\n\n\n");/*幽默一下哈↖(^ω^)↗*/

  42. system("pause"); /*程序挂起命令*/

  43. }

  44. else/*若等于0000000000则运行下面指令*/

  45. {

  46.      /*这段为已注册无限制代码↓↓*/

  47.     for(;;)/*循环语句,不设定条件,可无限次运行算法指令*/

  48.    {

  49.     printf("\n请输入一组需加密的数字(已注册,可无限使用)\n\n  ");/*显示说明*/

  50.     scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/

  51.     a=a+100000;/*进行加密算法↓↓*/

  52.     a=a+100009;

  53.     a=a+100052;

  54.     a=a+100878;

  55.     a=a+108546;

  56.     a=a+113545;

  57.     a=a+314123;/*进行加密算法↑↑*/

  58.     printf("\n\n\a~\(≧▽≦)/~恭喜,已完成加密!密文为:%d\n\n",a);/*算法完成,输出密文*/

  59.     system("pause");/*程序挂起命令*/

  60. }

  61. }

  62. }

  63. else if(a==2)/*判断变量a是否等于2,条件成立则执行下面的指令,否则跳过下面的指令*/

  64. {

  65.         printf("\n   (*^__^*) 欢迎使用解密程序(注:试用版只能使用三次)\n");/*显示说明*/

  66.    printf("\n请输入序列号:\n\n  ");/*显示说明*/

  67.    scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/

  68.    if(a!=0000000000)/*若用户所输入的数值不等于0000000000则运行下面指令*/

  69.    {

  70.   /*未注册↓↓*/

  71.     while(i!=0)/*循环语句,设定条件为1次,达到三次后跳出循环语句即i等于3*/

  72.    {

  73.     printf("\n请输入一组需解密的数字(未注册)\n\n  ");/*显示说明*/

  74.     scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/

  75.     a=a-100000;/*逆行执行加密算法↓↓*/

  76.     a=a-100009;

  77.     a=a-100052;

  78. a=a-100878;

  79.     a=a-108546;

  80.     a=a-113545;

  81.     a=a-314123;/*逆行执行加密算法↑↑*/

  82.     i--;/*运行算法一次则i加1,达到三次后满足循环条件*/

  83.     printf("\n\a   ~\(≧▽≦)/~恭喜,已完成解密!密码为:%d(还有%d次使用权)\n\n",a,i);/*算法完成输出真实密码*/

  84.     system("pause");/*程序挂起命令*/

  85. }

  86. printf("\n\a\a   ╮(╯▽╰)╭对不起,您使用的次数已达到试用版的上限!\n\n");

  87. printf("\n\n\nO(∩_∩)O哈哈~,告诉你一个秘密哈,若想再次使用可以再次运行本程序,照样\n还可以使用三次。不过,如果你这样做的话,也只能说明你笨╮(╯▽╰)╭\n\n\n");

  88. system("pause"); /*程序挂起命令*/

  89. }

  90. else/*若等于0000000000则运行下面指令*/

  91. {

  92.      /*已注册↓↓*/

  93.     for(;;)/*循环语句,不设定条件*/

  94.    {

  95.     printf("\n请输入一组需解密的数字(已注册,可无限使用)\n\n  ");/*显示说明*/

  96.     scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/

  97.     a=a-100000;/*逆行执行加密算法↓↓*/

  98.     a=a-100009;

  99.     a=a-100052;

  100.     a=a-100878;

  101.     a=a-108546;

  102.     a=a-113545;

  103.     a=a-314123;/*逆行执行加密算法↑↑*/

  104.     printf("\n\n\a   ~\(≧▽≦)/~恭喜,已完成解密!密码为:%d\n\n",a);/*算法完成输出真实密码*/

  105.     system("pause");/*程序挂起命令*/

  106. }

  107. }

  108. }

  109. }

  110. *********************************源代码****************************************
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:71922 发表于 2015-1-11 01:28 | 只看该作者
本帖最后由 liuyuxi 于 2015-1-11 01:54 编辑

首先我得感谢我的一个兄弟——谢武,如果不是他的C++源代码,我还没那么快学到函数这方面的知识也正因为他的源代码让我懂了一些函数调用的技巧。谢谢你,谢武!祝你考证成功….
作品名称:数字密码加密程序(改进版)
作品目的:增加对条件指令、循环指令的了解并熟悉自定义函数及调用函数的方法
作品功能:实现注册验证及对数字进行加密、解密功能
作品改进:利用函数调用改进了选择一个功能后必须重启程序才能再次选择另一种功能
作品缺陷:程序判断用户的选择只能用数字否则出错(尝试用过char类型),只能加密 9位数字否则不能正确解密(BUG与算法无关),每选择一次功能都必须重新输入序列号,以上原因尚不明确!⊙﹏⊙b,希望各位能指教。
程序界面:
  1. 程序源代码:(编译环境为开源软件DEV-C++ 4.9.9.2 多国语言版)

  2. *********************************源代码****************************************

  3. #include<stdio.h>/*加载包含基本输入输出函数头文件*/

  4. #include<stdlib.h>/*加载标准函数库头文件*/

  5. int jiamiweizhuce(int i=3,int a=0,int d=0)/*声明自定义jiamiweizhuce函数(未注册限制使用)同时声明变量*/

  6. {

  7. /*以下为未注册限制代码↓↓*/

  8.     while(i!=0)/*循环语句,设定条件为3次,由声明变量时确定,达到三次后跳出循环停止运行算法*/

  9.    {

  10.     printf("\n请输入一组需加密的数字【未注册】\n\n  ");/*显示说明*/

  11.     scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/

  12. a=a+100000;/*进行加密算法↓↓*/

  13.     a=a+100009;

  14.     a=a+100052;

  15.     a=a+100878;

  16.     a=a+108546;

  17.     a=a+113545;

  18.     a=a+314123;/*进行加密算法↑↑*/

  19.     i--;/*运行算法一次则i减1,达到三次后满足循环条件即运行3次算法,则i=3-3=0*/

  20.     printf("\n\n~\a\(≧▽≦)/~恭喜,已完成加密!密文为:【%d】(还有【%d】次使用权)\n\n",a,i);/*算法完成输出密文并提醒使用次数*/

  21.     printf("\n返回主菜单请输入数字【3】,继续加密请输入任意数字\n\n  ");/*提示*/

  22.     scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/

  23.     if(d==3)/*若变量d等于3则强制跳出循环*/

  24.     break;/*强制跳出循环*/

  25. }

  26. if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/

  27.        {

  28.        int zhu();/*调用自定义的zhu函数*/

  29.        zhu();/*我也不清楚为什么还要再写一次函数名,我是在我的兄弟"武"的C++代码得到的启发,如果没这句代码将无法调用此函数!或许这就是强制调用函数吧!*/

  30.        }

  31. system("pause");/*程序挂起*/

  32. int tishi();/*调用自定义的tishi函数*/

  33. tishi();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/

  34. }

  35. int jiamiyizhuce(int i=3,int a=0,int d=0)/*声明自定义jiamiyizhuce函数(已注册无限制使用)*/

  36. {

  37.          /*以下为已注册无限制代码↓↓*/

  38.     for(;;)/*循环语句,不设定条件,可无限次运行算法指令*/

  39.    {

  40.     printf("\n请输入一组需加密的数字【已注册,可无限使用】\n\n  ");/*显示说明*/

  41.     scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/

  42.     a=a+100000;/*进行加密算法↓↓*/

  43.     a=a+100009;

  44.     a=a+100052;

  45.     a=a+100878;

  46.     a=a+108546;

  47.     a=a+113545;

  48.     a=a+314123;/*进行加密算法↑↑*/

  49.     printf("\n\n\a~\(≧▽≦)/~恭喜,已完成加密!密文为:【%d】\n\n",a);/*算法完成,输出密文*/

  50.     printf("\n返回主菜单请输入数字【3】,继续加密请输入任意数字\n\n  ");/*提示*/

  51. scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/

  52.     if(d==3)/*若变量d等于3则强制跳出循环*/

  53.     break; /*强制跳出循环*/

  54. }

  55. if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/

  56.        {

  57.        int zhu();/*调用自定义的zhu函数*/

  58.        zhu();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/

  59.        }

  60. system("pause");/*程序挂起*/

  61.     }

  62.     int jiemiweizhuce(int i=3,int a=0,int d=0)/*声明解密未注册(限制使用)函数*/

  63. {

  64.       /*以下为未注册限制代码↓↓*/

  65.     while(i!=0)/*循环语句,设定条件为1次,达到三次后跳出循环语句即i等于3*/

  66.    {

  67.     printf("\n请输入一组需解密的数字【未注册】\n\n  ");/*显示说明*/

  68.     scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/

  69.     a=a-100000;/*逆行执行加密算法↓↓*/

  70.     a=a-100009;

  71.     a=a-100052;

  72.     a=a-100878;

  73.     a=a-108546;

  74.     a=a-113545;

  75.     a=a-314123;/*逆行执行加密算法↑↑*/

  76.     i--;/*运行算法一次则i加1,达到三次后满足循环条件*/

  77.     printf("\n\a   ~\(≧▽≦)/~恭喜,已完成解密!密码为:【%d】(还有【%d】次使用权)\n\n",a,i);/*算法完成输出真实密码*/

  78.        printf("\n返回主菜单请输入数字【3】,继续加密请输入任意数字\n\n  ");/*提示*/

  79.     scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/

  80.     if(d==3)/*若变量d等于3则强制跳出循环*/

  81.     break;/*强制跳出循环*/

  82. }

  83. if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/

  84.        {

  85.        int zhu();/*调用自定义的zhu函数*/

  86.        zhu();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/

  87.        }

  88. system("pause");/*程序挂起*/

  89. int tishi();/*调用自定义的tishi函数*/

  90. tishi();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/

  91. }

  92.     int jiemiyizhuce(int i=3,int a=0,int d=0)/*声明解密已注册(解除限制)函数*/

  93.     {

  94.              /*以下为已注册无限制代码↓↓*/

  95.     for(;;)/*循环语句,不设定条件*/

  96.    {

  97.     printf("\n请输入一组需解密的数字【已注册,可无限使用】\n\n  ");/*显示说明*/

  98.     scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/

  99.     a=a-100000;/*逆行执行加密算法↓↓*/

  100.     a=a-100009;

  101.     a=a-100052;

  102.     a=a-100878;

  103.     a=a-108546;

  104.     a=a-113545;

  105.     a=a-314123;/*逆行执行加密算法↑↑*/

  106.     printf("\n\n\a   ~\(≧▽≦)/~恭喜,已完成解密!密码为:【%d】\n\n",a);/*算法完成输出真实密码*/

  107.     printf("\n返回主菜单请输入数字【3】,继续加密请输入任意数字\n\n  ");/*提示*/

  108.     scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/

  109.     if(d==3)/*若变量d等于3则强制跳出循环*/

  110.     break; /*强制跳出循环*/

  111. }

  112. if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/

  113.        {

  114.        int zhu();/*调用自定义的zhu函数*/

  115.        zhu();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/

  116.        }

  117. system("pause");/*程序挂起*/

  118.     }



  119. int zhu()/*自定义zhu函数*/

  120.     {

  121.     int a,i=3;/*声明整数变量a、i,并把赋值3给i*/

  122.        printf("\n********************************************************************");

  123.        printf("\n   此程序为C语言编写,编译器为:DEV-C++ 4.9.9.2 多国语言版");

  124.    printf("\n\n   愿结交对C语言深感兴趣并研究过C语言的朋友\n   若有任何建议或愿共同探讨请联系QQ:0000000000\n   本程序,采用垃圾算法,纯属练习作品,各位不必当真。\n");

  125.   

  126.    printf("\n********************************************************************\n");

  127.    system("pause");

  128.    printf("\n作品名称:数字密码加密程序(改进版)\n\n作品目的:增加对条件指令、循环指令的了解并熟悉自定义函数及调用函数的方法\n\n作品功能:实现注册验证及对数字进行加密、解密功能\n\n作品改进:利用函数调用改进了选择一个功能后必须重启程序才能再次选择另一种功能\n\n作品缺陷:程序判断用户的选择只能用数字否则出错(尝试用过char类型),只能加密\n          9位数字否则不能正确解密(此BUG与算法无关),每选择一次功能都必须重\n          新输入序列号,以上原因尚不明确!⊙﹏⊙b汗,希望各位能指教。");

  129.       printf("\n********************************************************************");

  130.    printf("\n\n   O(∩_∩)O哈哈~,请选择所需要的功能:\n\n 【1】:加密(目前只支持9位任意数字,原因至今不明  (#‵′)凸\n\n 【2】:解密(只对本程序加密的密文有效)\n\n 【0】:退出\n\n  ");

  131.    scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/



  132. while(a>2)/*设定循环条件,达到输入错误选项即可循环执行确认选择功能指令*/

  133. {

  134.            printf("\n\n   O(∩_∩)O哈哈~,不能乱选哦,请再次认真选择所需要的功能:\n\n 【1】:加密(目前只支持9位任意数字,原因至今不明  (#‵′)凸\n\n 【2】:解密(只对本程序加密的密文有效)\n\n 【0】:退出\n\n  ");

  135.    scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/

  136.            }

  137.    if(a==1)/*判断变量a是否等于1,条件成立则执行下面的指令,否则跳过下面的指令*/

  138.    {

  139.    printf("\n   (*^__^*) 欢迎使用本加密程序【注:试用版只能使用三次】\n");/*显示说明*/

  140.    printf("请输入序列号:\n\n  ");/*显示说明*/

  141.    scanf("%d",&a);/*读取用户所输入的序列号并赋值给变量a*/

  142.   if(a!=0000000000)/*若用户所输入的序列号不等于0000000000则执行下面的指令,否则跳过下面的指令*/

  143.   jiamiweizhuce();/*调用jiamiweizhuce函数*/

  144.   else/*若等于0000000000则运行下面指令*/

  145.   jiamiyizhuce();/*调用jiamiyizhuce函数*/

  146. }

  147.    if(a==2)/*判断变量a是否等于1,条件成立则执行下面的指令,否则跳过下面的指令*/

  148.    {

  149.    printf("\n   (*^__^*) 欢迎使用本解密程序【注:试用版只能使用三次】\n");/*显示说明*/

  150.    printf("请输入序列号:\n\n  ");/*显示说明*/

  151.    scanf("%d",&a);/*读取用户所输入的序列号并赋值给变量a*/

  152.   if(a!=0000000000)/*若用户所输入的序列号不等于0000000000则执行下面的指令,否则跳过下面的指令*/

  153.   jiemiweizhuce();/*调用jiemiweizhuce代码*/

  154.   else/*若等于0000000000则运行下面指令*/

  155. jiemiyizhuce();/*调用jiemiyizhuce函数*/

  156. }

  157. }

  158. int main()/*声明主函数,每个C程序必须具备的*/

  159. {

  160. printf("\n                感谢我的兄弟----谢武\n\n   O(∩_∩)O哈哈~!本来我还没那么快学到函数调用知识,\n   看了你不惜耗费睡眠时间(一个通宵)用C++编写的源代码\n   让我有所领悟,谢谢你,祝你考证顺利!O(∩_∩)O~\n\n");/**/

  161. system("pause");/*程序挂起*/

  162. int zhu();/*调用自定义zhu函数*/

  163. zhu();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/

  164. }

  165. int tishi()/*自定义tishi函数*/

  166. {

  167.     int q;/*声明变量*/

  168.     printf("\n\a\a\a   ╮(╯▽╰)╭对不起,您使用的次数已达到试用版的上限!\n\n"); /*警告用户*/

  169. printf("\n\n\nO(∩_∩)O哈哈~,告诉你一个秘密哈,若想再次使用可以再次运行本程序,照样\n还可以使用三次。不过,如果你这样做的话,也只能说明你笨╮(╯▽╰)╭\n\n\n");/*幽默一下哈↖(^ω^)↗*/

  170. printf("\n返回主菜单请输入数字【3】,退出请输入任意数字\n\n  ");/*提示*/

  171. scanf("%d",&q);

  172. if(q==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/

  173. {

  174.        int zhu();/*调用自定义的zhu函数*/

  175.        zhu();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/

  176. }

  177. }

  178. *********************************源代码****************************************
复制代码



回复

使用道具 举报

板凳
ID:71922 发表于 2015-1-11 01:28 | 只看该作者
本帖最后由 liuyuxi 于 2015-1-11 01:58 编辑

(二次改进版):     ↖(^ω^)↗本次灵感来自常量特性,但改进时,却发现直接利用函数调用就能改进选择一次功 能都必须重新输入序列号的缺陷,哈!函数可  真好玩↖(^ω^)↗,真想跳过数组知识直接学\n   函数知识,不过听说数组也蛮好玩的,不过...快开学了..........


作品名称:数字密码加密程序(二次改进版)
作品目的:增加对条件指令、循环指令的了解并熟悉自定义函数及调用函数的方法
作品功能:实现注册验证及对数字进行加密、解密功能
作品改进:利用函数调用改进了选择一个功能后必须重启程序才能再次选择另一种功能;改进了每选择一次功能都必须重新输入序列号的缺陷
作品缺陷:程序判断用户的选择只能用数字否则出错(尝试用过char类型),只能加密9位数字否则不能正确解密(此BUG与算法无关),无论注册码是否正确重启程序后需再次输入序列号.以上原因尚不明确!⊙﹏⊙b汗.希望各位能多多指教。
源代码:
  1. #include<stdio.h>/*加载包含基本输入输出函数头文件*/
  2. #include<stdlib.h>/*加载标准函数库头文件*/
  3. int jiamiweizhuce(int i=3,int a=0,int d=0)/*声明自定义jiamiweizhuce函数(未注册限制使用)同时声明变量*/
  4. {
  5. /*以下为未注册限制代码↓↓*/
  6.     while(i!=0)/*循环语句,设定条件为3次,由声明变量时确定,达到三次后跳出循环停止运行算法*/  
  7.    {
  8.     printf("\n请输入一组需加密的数字【未注册】\n\n  ");/*显示说明*/
  9.     scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/
  10.     a=a+100000;/*进行加密算法↓↓*/
  11.     a=a+100009;
  12.     a=a+100052;
  13.     a=a+100878;
  14.     a=a+108546;
  15.     a=a+113545;
  16.     a=a+314123;/*进行加密算法↑↑*/
  17.     i--;/*运行算法一次则i减1,达到三次后满足循环条件即运行3次算法,则i=3-3=0*/
  18.     printf("\n\n~\a\(≧▽≦)/~恭喜,已完成加密!密文为:【%d】(还有【%d】次使用权)\n\n",a,i);/*算法完成输出密文并提醒使用次数*/
  19.     printf("\n返回主菜单请输入数字【3】,继续加密请输入任意数字\n\n  ");/*提示*/
  20.     scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/
  21.     if(d==3)/*若变量d等于3则强制跳出循环*/
  22.     break;/*强制跳出循环*/
  23. }
  24. if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
  25.        {
  26.        int zhu();/*调用自定义的zhu函数*/
  27.        zhu();/*我也不清楚为什么还要再写一次函数名,我是在我的兄弟"武"的C++代码得到的启发,如果没这句代码将无法调用此函数!或许这就是强制调用函数吧!*/
  28.        }
  29. system("pause");/*程序挂起*/
  30. int tishi();/*调用自定义的tishi函数*/
  31. tishi();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
  32. }
  33. int jiamiyizhuce(int i=3,int a=0,int d=0)/*声明自定义jiamiyizhuce函数(已注册无限制使用)*/
  34. {
  35.          /*以下为已注册无限制代码↓↓*/
  36.     for(;;)/*循环语句,不设定条件,可无限次运行算法指令*/
  37.    {
  38.     printf("\n请输入一组需加密的数字【已注册,可无限使用】\n\n  ");/*显示说明*/
  39.     scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/
  40.     a=a+100000;/*进行加密算法↓↓*/
  41.     a=a+100009;
  42.     a=a+100052;
  43.     a=a+100878;
  44.     a=a+108546;
  45.     a=a+113545;
  46.     a=a+314123;/*进行加密算法↑↑*/
  47.     printf("\n\n\a~\(≧▽≦)/~恭喜,已完成加密!密文为:【%d】\n\n",a);/*算法完成,输出密文*/
  48.     printf("\n返回主菜单请输入数字【3】,继续加密请输入任意数字\n\n  ");/*提示*/
  49.     scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/
  50.     if(d==3)/*若变量d等于3则强制跳出循环*/
  51.     break; /*强制跳出循环*/
  52. }
  53. if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
  54.        {
  55.        int yizhuce();/*调用自定义的yizhuc函数达到改进重选功能不必再次输入序列号*/
  56.        yizhuce();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
  57.        }
  58. system("pause");/*程序挂起*/
  59.     }
  60.     int jiemiweizhuce(int i=3,int a=0,int d=0)/*声明解密未注册(限制使用)函数*/
  61. {
  62.       /*以下为未注册限制代码↓↓*/
  63.     while(i!=0)/*循环语句,设定条件为1次,达到三次后跳出循环语句即i等于3*/  
  64.    {
  65.     printf("\n请输入一组需解密的数字【未注册】\n\n  ");/*显示说明*/
  66.     scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/
  67.     a=a-100000;/*逆行执行加密算法↓↓*/
  68.     a=a-100009;
  69.     a=a-100052;
  70.     a=a-100878;
  71.     a=a-108546;
  72.     a=a-113545;
  73.     a=a-314123;/*逆行执行加密算法↑↑*/
  74.     i--;/*运行算法一次则i加1,达到三次后满足循环条件*/
  75.     printf("\n\a   ~\(≧▽≦)/~恭喜,已完成解密!密码为:【%d】(还有【%d】次使用权)\n\n",a,i);/*算法完成输出真实密码*/
  76.        printf("\n返回主菜单请输入数字【3】,继续加密请输入任意数字\n\n  ");/*提示*/
  77.     scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/
  78.     if(d==3)/*若变量d等于3则强制跳出循环*/
  79.     break;/*强制跳出循环*/
  80. }
  81. if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
  82.        {
  83.        int zhu();/*调用自定义的zhu函数*/
  84.        zhu();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
  85.        }
  86. system("pause");/*程序挂起*/
  87. int tishi();/*调用自定义的tishi函数*/
  88. tishi();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
  89. }
  90.     int jiemiyizhuce(int i=3,int a=0,int d=0)/*声明解密已注册(解除限制)函数*/
  91.     {
  92.              /*以下为已注册无限制代码↓↓*/
  93.     for(;;)/*循环语句,不设定条件*/
  94.    {
  95.     printf("\n请输入一组需解密的数字【已注册,可无限使用】\n\n  ");/*显示说明*/
  96.     scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/
  97.     a=a-100000;/*逆行执行加密算法↓↓*/
  98.     a=a-100009;
  99.     a=a-100052;
  100.     a=a-100878;
  101.     a=a-108546;
  102.     a=a-113545;
  103.     a=a-314123;/*逆行执行加密算法↑↑*/
  104.     printf("\n\n\a   ~\(≧▽≦)/~恭喜,已完成解密!密码为:【%d】\n\n",a);/*算法完成输出真实密码*/
  105.     printf("\n返回主菜单请输入数字【3】,继续加密请输入任意数字\n\n  ");/*提示*/
  106.     scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/
  107.     if(d==3)/*若变量d等于3则强制跳出循环*/
  108.     break; /*强制跳出循环*/
  109. }
  110. if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
  111.        {
  112.        int yizhuce();/*调用自定义的yizhuc函数达到改进重选功能不必再次输入序列号*/
  113.        yizhuce();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
  114.        }
  115. system("pause");/*程序挂起*/
  116.     }
  117. int zhu()/*自定义zhu函数*/
  118.     {
  119.     int a,i=3;/*声明整数变量a、i,并把赋值3给i*/
  120.        printf("\n********************************************************************");
  121.        printf("\n   此程序为C语言编写,编译器为:DEV-C++ 4.9.9.2 多国语言版");
  122.    printf("\n\n   愿结交对C语言深感兴趣并研究过C语言的朋友\n   若有任何建议或愿共同探讨请联系QQ:0000000000\n   本程序,采用垃圾算法,纯属练习作品,各位不必当真。\n");
  123.    
  124.    printf("\n********************************************************************\n");
  125.    system("pause");
  126.    printf("\n作品名称:数字密码加密程序(二次改进版)\n\n作品目的:增加对条件指令、循环指令的了解并熟悉自定义函数及调用函数的方法\n\n作品功能:实现注册验证及对数字进行加密、解密功能\n\n作品改进:利用函数调用改进了选择一个功能后必须重启程序才能再次选择另一种功能\n          改进了每选择一次功能都必须重新输入序列号的缺陷\n\n作品缺陷:程序判断用户的选择只能用数字否则出错(尝试用过char类型),只能加密\n          9位数字否则不能正确解密(此BUG与算法无关),无论注册码是否正确重启\n          程序后需再次输入序列号.以上原因尚不明确!⊙﹏⊙b汗.希望各位能多多\n          指教。");
  127.       printf("\n********************************************************************");
  128.    printf("\n\n   O(∩_∩)O哈哈~,请选择所需要的功能:\n\n 【1】:加密(目前只支持9位任意数字,原因至今不明  (#‵′)凸\n\n 【2】:解密(只对本程序加密的密文有效)\n\n 【0】:退出\n\n  ");
  129.    scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/
  130. while(a>2)/*设定循环条件,达到输入错误选项即可循环执行确认选择功能指令*/
  131. {
  132.            printf("\n\n   O(∩_∩)O哈哈~,不能乱选哦,请再次认真选择所需要的功能:\n\n 【1】:加密(目前只支持9位任意数字,原因至今不明  (#‵′)凸\n\n 【2】:解密(只对本程序加密的密文有效)\n\n 【0】:退出\n\n  ");
  133.    scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/
  134.            }
  135.    if(a==1)/*判断变量a是否等于1,条件成立则执行下面的指令,否则跳过下面的指令*/
  136.    {
  137.    printf("\n   (*^__^*) 欢迎使用本加密程序【注:试用版只能使用三次】\n");/*显示说明*/
  138.    printf("请输入序列号:\n\n  ");/*显示说明*/
  139.    scanf("%d",&a);/*读取用户所输入的序列号并赋值给变量a*/
  140.   if(a!=0000000000)/*若用户所输入的序列号不等于0000000000则执行下面的指令,否则跳过下面的指令*/
  141.   jiamiweizhuce();/*调用jiamiweizhuce函数*/
  142.   else/*若等于0000000000则运行下面指令*/
  143.   jiamiyizhuce();/*调用jiamiyizhuce函数*/
  144. }
  145.    if(a==2)/*判断变量a是否等于1,条件成立则执行下面的指令,否则跳过下面的指令*/
  146.    {
  147.    printf("\n   (*^__^*) 欢迎使用本解密程序【注:试用版只能使用三次】\n");/*显示说明*/
  148.    printf("请输入序列号:\n\n  ");/*显示说明*/
  149.    scanf("%d",&a);/*读取用户所输入的序列号并赋值给变量a*/
  150.   if(a!=0000000000)/*若用户所输入的序列号不等于0000000000则执行下面的指令,否则跳过下面的指令*/
  151.   jiemiweizhuce();/*调用jiemiweizhuce代码*/
  152.   else/*若等于0000000000则运行下面指令*/
  153. jiemiyizhuce();/*调用jiemiyizhuce函数*/
  154. }
  155. }
  156. int main()/*声明主函数,每个C程序必须具备的*/
  157. {
  158. printf("\n                    灵感\n\n   ↖(^ω^)↗本次灵感来自常量特性,但改进时,\n   却发现直接利用函数调用就能改进选择一次功\n   能都必须重新输入序列号的缺陷,哈!函数可\n   真好玩↖(^ω^)↗,真想跳过数组知识直接学\n   函数知识,不过听说数组也蛮好玩的,不过...\n   快开学了..........\n\n");/**/
  159. system("pause");/*程序挂起*/
  160. int zhu();/*调用自定义zhu函数*/
  161. zhu();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
  162. }  
  163. int tishi()/*自定义tishi函数*/
  164. {
  165.     int q;/*声明变量*/
  166.     printf("\n\a\a\a   ╮(╯▽╰)╭对不起,您使用的次数已达到试用版的上限!\n\n"); /*警告用户*/
  167. printf("\n\n\nO(∩_∩)O哈哈~,告诉你一个秘密哈,若想再次使用可以再次运行本程序,照样\n还可以使用三次。不过,如果你这样做的话,也只能说明你笨╮(╯▽╰)╭\n\n\n");/*幽默一下哈↖(^ω^)↗*/
  168. printf("\n返回主菜单请输入数字【3】,退出请输入任意数字\n\n  ");/*提示*/
  169. scanf("%d",&q);
  170. if(q==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
  171. {
  172.        int zhu();/*调用自定义的zhu函数*/
  173.        zhu();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
  174. }
  175. }
  176. int yizhuce()/*自定义yizhuce函数*//*此函数已去除验证序列号的功能*/
  177.     {
  178.     int a,i=3;/*声明整数变量a、i,并把赋值3给i*/
  179.       printf("\n********************************************************************");
  180.        printf("\n   此程序为C语言编写,编译器为:DEV-C++ 4.9.9.2 多国语言版");
  181.    printf("\n\n   愿结交对C语言深感兴趣并研究过C语言的朋友\n   若有任何建议或愿共同探讨请联系QQ:0000000000\n   本程序,采用垃圾算法,纯属练习作品,各位不必当真。\n");
  182.    
  183.    printf("\n********************************************************************\n");
  184.    system("pause");
  185.    printf("\n作品名称:数字密码加密程序(二次改进版)\n\n作品目的:增加对条件指令、循环指令的了解并熟悉自定义函数及调用函数的方法\n\n作品功能:实现注册验证及对数字进行加密、解密功能\n\n作品改进:利用函数调用改进了选择一个功能后必须重启程序才能再次选择另一种功能\n          改进了每选择一次功能都必须重新输入序列号的缺陷\n\n作品缺陷:程序判断用户的选择只能用数字否则出错(尝试用过char类型),只能加密\n          9位数字否则不能正确解密(此BUG与算法无关),无论注册码是否正确重启\n          程序后需再次输入序列号.以上原因尚不明确!⊙﹏⊙b汗.希望各位能多多\n          指教。");
  186.       printf("\n********************************************************************");
  187.    printf("\n\n   O(∩_∩)O哈哈~,请选择所需要的功能:\n\n 【1】:加密(目前只支持9位任意数字,原因至今不明  (#‵′)凸\n\n 【2】:解密(只对本程序加密的密文有效)\n\n 【0】:退出\n\n  ");
  188.    scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/
  189. while(a>2)/*设定循环条件,达到输入错误选项即可循环执行确认选择功能指令*/
  190. {
  191.            printf("\n\n   O(∩_∩)O哈哈~,不能乱选哦,请再次认真选择所需要的功能:\n\n 【1】:加密(目前只支持9位任意数字,原因至今不明  (#‵′)凸\n\n 【2】:解密(只对本程序加密的密文有效)\n\n 【0】:退出\n\n  ");
  192.    scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/
  193.            }
  194.    if(a==1)/*判断变量a是否等于1,条件成立则执行下面的指令,否则跳过下面的指令*/
  195.    {
  196.   jiamiyizhuce();/*调用jiamiyizhuce函数*/
  197. }
  198.    if(a==2)/*判断变量a是否等于1,条件成立则执行下面的指令,否则跳过下面的指令*/
  199.    {
  200. jiemiyizhuce();/*调用jiemiyizhuce函数*/
  201. }
  202. }
复制代码


回复

使用道具 举报

地板
ID:71922 发表于 2015-1-11 01:30 | 只看该作者
本帖最后由 liuyuxi 于 2015-1-11 01:57 编辑

(二次改进版)发现BUG 已修正:

郁闷,昨天调试了一下这个程序,当使用时一种加密或解密功能,输入0时应该会直接退出,可它还会显示出   
“╮(╯▽╰)╭对不起,您使用的次数已达到试用版的上限!
O(_)O哈哈~,告诉你一个秘密哈,若想再次使用可以再次运行本程序,照样还可以使用三次。不过,如果你这样做的话,也只能说明你笨”
这样的一段话,也就是说,输入0后会先跳到tishi自定义函数
详情请看源代码.......BUG结果为:条件命令的“失败经过”
失败经过:(以switch条件语句进行解释)
switch(条件表达式)
{
case 结果1
程序语句代码;
break;
case 结果2
程序语句代码;
break;
………..
default:
程序语句代码;
}
Switch条件语句,如果找到相同的结果值则执行该case内的程序语句,当执行完case块后,并不会直接离开switch块。还是会往下继续执行其他case语句和default语句(程序从上往下执行),这样的情形成为“失败经过”现象。因此通常每道case语句后面必须加上break语句来结束switch语句,才可以避免。
最根本原因是因为我不知道退出函数,所以只能利用下面自己发现的规律来达到输入任意键即可退出:
2】,if(条件表达式).......else 若没写最后一个else,又不符合条件表达式,则默认退出(下面必须无代码若有则直接运行下面的代码)
成功利用此规律的为我第一、二次发表程序当第三次改进程序时破坏了这个规律所以会导致出现这个BUG…⊙﹏⊙b汗,以后这个规律还是少用为妙~~~
修正版界面:
修正版的源代码:
=========================================================================
#include<stdio.h>/*加载包含基本输入输出函数头文件*/
#include<stdlib.h>/*加载标准函数库头文件*/
int main()/*声明主函数,每个C程序必须具备的*/
{
printf("\n                    灵感\n\n   ↖(^ω^)↗本次灵感来自常量特性,但改进时,\n   却发现直接利用函数调用就能改进选择一次功\n   能都必须重新输入序列号的缺陷,哈!函数可\n   真好玩↖(^ω^)↗,真想跳过数组知识直接学\n   函数知识,不过听说数组也蛮好玩的,可是...\n   快开学了..........\n\n");
system("pause");/*程序挂起*/
int zhu();/*调用自定义zhu函数*/
zhu();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
}
/*******************************注册验证及数字加密功能代码**********************************/
int jiamiweizhuce(int i=3,int a=0,int d=0)/*声明自定义jiamiweizhuce函数(未注册限制使用)同时声明变量*/
{
/*以下为未注册限制代码↓↓*/
    while(i!=0)/*循环语句,设定条件为3次,由声明变量时确定,达到三次后跳出循环停止运行算法*/  
   {
    printf("\n请输入一组需加密的数字【未注册】\n\n  ");/*显示说明*/
    scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/
    a=a+100000;/*进行加密算法↓↓*/
    a=a+100009;
    a=a+100052;
    a=a+100878;
    a=a+108546;
    a=a+113545;
    a=a+314123;/*进行加密算法↑↑*/
    i--;/*运行算法一次则i减1,达到三次后满足循环条件即运行3次算法,则i=3-3=0*/
    printf("\n\n~\a\(≧▽≦)/~恭喜,已完成加密!密文为:【%d】(还有【%d】次使用权)\n\n",a,i);/*算法完成输出密文并提醒使用次数*/
    printf("\n返回主菜单请输入数字【3】,继续加密请输入任意数字\n\n  ");/*提示*/
    scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/
    if(d==3)/*若变量d等于3则强制跳出循环*/
    break;/*强制跳出循环*/
}
if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
       {
       int zhu();/*调用自定义的zhu函数*/
       zhu();/*我也不清楚为什么还要再写一次函数名,我是在我的兄弟"武"的C++代码得到的启发,如果没这句代码将无法调用此函数!或许这就是强制调用函数吧!*/
       }
system("pause");/*程序挂起*/
int tishi();/*调用自定义的tishi函数*/
tishi();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
}
int jiamiyizhuce(int i=3,int a=0,int d=0)/*声明自定义jiamiyizhuce函数(已注册无限制使用)*/
{
         /*以下为已注册无限制代码↓↓*/
    for(;;)/*循环语句,不设定条件,可无限次运行算法指令*/
   {
    printf("\n请输入一组需加密的数字【已注册,可无限使用】\n\n  ");/*显示说明*/
    scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/
    a=a+100000;/*进行加密算法↓↓*/
    a=a+100009;
    a=a+100052;
    a=a+100878;
    a=a+108546;
    a=a+113545;
    a=a+314123;/*进行加密算法↑↑*/
    printf("\n\n\a~\(≧▽≦)/~恭喜,已完成加密!密文为:【%d】\n\n",a);/*算法完成,输出密文*/
    printf("\n返回主菜单请输入数字【3】,继续加密请输入任意数字\n\n  ");/*提示*/
    scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/
    if(d==3)/*若变量d等于3则强制跳出循环*/
    break; /*强制跳出循环*/
}
if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
       {
       int yizhuce();/*调用自定义的yizhuc函数达到改进重选功能不必再次输入序列号*/
       yizhuce();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
       }
system("pause");/*程序挂起*/
    }
    int jiemiweizhuce(int i=3,int a=0,int d=0)/*声明解密未注册(限制使用)函数*/
{
      /*以下为未注册限制代码↓↓*/
    while(i!=0)/*循环语句,设定条件为3次,达到三次后跳出循环语句即i等于3*/  
   {
    printf("\n请输入一组需解密的数字【未注册】\n\n  ");/*显示说明*/
    scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/
    a=a-100000;/*逆行执行加密算法↓↓*/
    a=a-100009;
    a=a-100052;
    a=a-100878;
    a=a-108546;
    a=a-113545;
    a=a-314123;/*逆行执行加密算法↑↑*/
    i--;/*运行算法一次则i加1,达到三次后满足循环条件*/
    printf("\n\a   ~\(≧▽≦)/~恭喜,已完成解密!密码为:【%d】(还有【%d】次使用权)\n\n",a,i);/*算法完成输出真实密码*/
       printf("\n返回主菜单请输入数字【3】,继续解密请输入任意数字\n\n  ");/*提示*/
    scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/
    if(d==3)/*若变量d等于3则强制跳出循环*/
    break;/*强制跳出循环*/
}
if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
       {
       int zhu();/*调用自定义的zhu函数*/
       zhu();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
       }
system("pause");/*程序挂起*/
int tishi();/*调用自定义的tishi函数*/
tishi();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
}
    int jiemiyizhuce(int i=3,int a=0,int d=0)/*声明解密已注册(解除限制)函数*/
    {
             /*以下为已注册无限制代码↓↓*/
    for(;;)/*循环语句,不设定条件*/
   {
    printf("\n请输入一组需解密的数字【已注册,可无限使用】\n\n  ");/*显示说明*/
    scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/
    a=a-100000;/*逆行执行加密算法↓↓*/
    a=a-100009;
    a=a-100052;
    a=a-100878;
    a=a-108546;
    a=a-113545;
    a=a-314123;/*逆行执行加密算法↑↑*/
    printf("\n\n\a   ~\(≧▽≦)/~恭喜,已完成解密!密码为:【%d】\n\n",a);/*算法完成输出真实密码*/
    printf("\n返回主菜单请输入数字【3】,继续解密请输入任意数字\n\n  ");/*提示*/
    scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/
    if(d==3)/*若变量d等于3则强制跳出循环*/
    break; /*强制跳出循环*/
}
if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
       {
       int yizhuce();/*调用自定义的yizhuc函数达到改进重选功能不必再次输入序列号*/
       yizhuce();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
       }
system("pause");/*程序挂起*/
    }
/*******************************注册验证及数字加密功能代码**********************************/
/****************************************主要代码*******************************************/
int zhu()/*自定义zhu函数*/
    {
    int a,i=3;/*声明整数变量a、i,并把赋值3给i*/
       printf("\n********************************************************************");
       printf("\n   此程序为C语言编写,编译器为:DEV-C++ 4.9.9.2 多国语言版");
   printf("\n\n   愿结交对C语言深感兴趣并研究过C语言的朋友\n   若有任何建议或愿共同探讨请联系QQ:0000000000\n   本程序,采用垃圾算法,纯属练习作品,各位不必当真。\n");
   
   printf("\n********************************************************************\n");
   system("pause");
   printf("\n作品名称:数字密码加密程序(二次改进版)\n\n作品目的:增加对条件指令、循环指令的了解并熟悉自定义函数及调用函数的方法\n\n作品功能:实现注册验证及对数字进行加密、解密功能\n\n作品改进:利用函数调用改进了选择一个功能后必须重启程序才能再次选择另一种功能\n          改进了每选择一次功能都必须重新输入序列号的缺陷\n\n作品缺陷:程序判断用户的选择只能用数字否则出错(尝试用过char类型),只能加密\n          9位数字否则不能正确解密(此BUG与算法无关),无论注册码是否正确重启\n          程序后需再次输入序列号.以上原因尚不明确!⊙﹏⊙b汗.希望各位能多多\n          指教。");
      printf("\n********************************************************************");
   printf("\n\n   O(∩_∩)O哈哈~,请选择所需要的功能:\n\n 【1】:加密(目前只支持9位任意数字,原因至今不明  (#‵′)凸\n\n 【2】:解密(只对本程序加密的密文有效)\n\n 【0】:退出\n\n  ");
   scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/
while(a>2)/*设定循环条件,达到输入错误选项即可循环执行确认选择功能指令*/
{
           printf("\n\n   O(∩_∩)O哈哈~,不能乱选哦,请再次认真选择所需要的功能:\n\n 【1】:加密(目前只支持9位任意数字,原因至今不明  (#‵′)凸\n\n 【2】:解密(只对本程序加密的密文有效)\n\n 【0】:退出\n\n  ");
   scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/
           }
switch(a)/*判断语句,在c++称为开关语句*/
{
case 1:/*若a等于1则运行下面代码*/
   printf("\n   (*^__^*) 欢迎使用本加密程序【注:试用版只能使用三次】\n");/*显示说明*/
   printf("请输入序列号:\n\n  ");/*显示说明*/
   scanf("%d",&a);/*读取用户所输入的序列号并赋值给变量a*/
  if(a!=0000000000)/*若用户所输入的序列号不等于0000000000则执行下面的指令,否则跳过下面的指令*/
  jiamiweizhuce();/*调用jiamiweizhuce函数*/
  else/*若等于0000000000则运行下面指令*/
  jiamiyizhuce();/*调用jiamiyizhuce函数*/
break;/*跳出判断语句避免“失败经过”*/
case 2:/*如果a等于2则运行下面代码*/
   printf("\n   (*^__^*) 欢迎使用本解密程序【注:试用版只能使用三次】\n");/*显示说明*/
   printf("请输入序列号:\n\n  ");/*显示说明*/
   scanf("%d",&a);/*读取用户所输入的序列号并赋值给变量a*/
  if(a!=0000000000)/*若用户所输入的序列号不等于0000000000则执行下面的指令,否则跳过下面的指令*/
  jiemiweizhuce();/*调用jiemiweizhuce代码*/
  else/*若等于0000000000则运行下面指令*/
jiemiyizhuce();/*调用jiemiyizhuce函数*/
break;/*跳出判断语句避免“失败经过”*/
case 0:/*若a等于0则运行下面代码*/
exit(0);/*退出程序*/
break;/*跳出判断语句避免“失败经过”*/
}
}
  
int tishi()/*自定义tishi函数*/
{
    int q;/*声明变量*/
    printf("\n\a\a\a   ╮(╯▽╰)╭对不起,您使用的次数已达到试用版的上限!\n\n"); /*警告用户*/
printf("\n\n\nO(∩_∩)O哈哈~,告诉你一个秘密哈,若想再次使用可以再次运行本程序,照样\n还可以使用三次。不过,如果你这样做的话,也只能说明你笨╮(╯▽╰)╭\n\n\n");/*幽默一下哈↖(^ω^)↗*/
printf("\n返回主菜单请输入数字【3】,退出请输入任意数字\n\n  ");/*提示*/
scanf("%d",&q);/*读取用户所输入数值并存入变量q*/
if(q==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
{
       int zhu();/*调用自定义的zhu函数*/
       zhu();/*原因尚不明确,若遇到函数调用不成功可再次写一次函数名,有强制调用函数的作用*/
}
else/*若不等于则运行下面代码即退出,达到按任意数字键退出的目的*/
exit(0);/*退出程序*/
}
int yizhuce()/*自定义yizhuce函数*//*此函数已去除验证序列号的功能*/
    {
    int a,i=3;/*声明整数变量a、i,并把赋值3给i*/
      printf("\n********************************************************************");
       printf("\n   此程序为C语言编写,编译器为:DEV-C++ 4.9.9.2 多国语言版");
   printf("\n\n   愿结交对C语言深感兴趣并研究过C语言的朋友\n   若有任何建议或愿共同探讨请联系QQ:0000000000\n   本程序,采用垃圾算法,纯属练习作品,各位不必当真。\n");
   
   printf("\n********************************************************************\n");
   system("pause");/*程序挂起代码*/
   printf("\n作品名称:数字密码加密程序(二次改进版)\n\n作品目的:增加对条件指令、循环指令的了解并熟悉自定义函数及调用函数的方法\n\n作品功能:实现注册验证及对数字进行加密、解密功能\n\n作品改进:利用函数调用改进了选择一个功能后必须重启程序才能再次选择另一种功能\n          改进了每选择一次功能都必须重新输入序列号的缺陷\n\n作品缺陷:程序判断用户的选择只能用数字否则出错(尝试用过char类型),只能加密\n          9位数字否则不能正确解密(此BUG与算法无关),无论注册码是否正确重启\n          程序后需再次输入序列号.以上原因尚不明确!⊙﹏⊙b汗.希望各位能多多\n          指教。");
      printf("\n********************************************************************");
   printf("\n\n   O(∩_∩)O哈哈~,请选择所需要的功能:\n\n 【1】:加密(目前只支持9位任意数字,原因至今不明  (#‵′)凸\n\n 【2】:解密(只对本程序加密的密文有效)\n\n 【0】:退出\n\n  ");
   scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/
while(a>2)/*设定循环条件,达到输入错误选项即可循环执行确认选择功能指令*/
{
           printf("\n\n   O(∩_∩)O哈哈~,不能乱选哦,请再次认真选择所需要的功能:\n\n 【1】:加密(目前只支持9位任意数字,原因至今不明  (#‵′)凸\n\n 【2】:解密(只对本程序加密的密文有效)\n\n 【0】:退出\n\n  ");
   scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/
           }
switch(a)/*判断语句,在c++称为开关语句*/
{
case 1:/*若a等于1则运行下面代码*/
jiamiyizhuce();/*调用jiamiyizhuce函数*/
break;/*跳出条件语句避免“失败经过”*/
case 2:/*若a等于2则运行下面代码*/
jiemiyizhuce();/*调用jiemiyizhuce函数*/
break;/*跳出条件语句避免“失败经过”*/
case 0:/*若a等于0则运行下面代码*/
exit(0);/*退出程序*/
break;/*跳出条件语句避免“失败经过”*/
}
}
==========================================================================

回复

使用道具 举报

5#
ID:71922 发表于 2015-1-11 01:33 | 只看该作者
本帖最后由 liuyuxi 于 2015-1-11 01:55 编辑

C语言作品(三次改进版)加入U盘锁定计算机功能:

   ↖(^ω^)↗哈哈,一个月嘞,在惠州实践了\n\t22天,╮(╯▽╰)╭~~当普工简直是堕落,本来满满的自信和积极的上进心,在那不过几天,就差点全被侵蚀掉了..真恐怖!还好那些管理员蛮不错,就是有些员工超猥琐的!也有些员工很黄很暴力⊙﹏⊙b汗..更离谱的是居然调戏女学生..吖的,超想买块豆腐砸死他们!! (#‵′)靠~..
   笨笨猪,谢谢你!谢谢你在我最失落时给我动力,给我信心!让我没有被他们所影响~~让我重拾自信~~让我的C再次突破!我们是最棒的↖(^ω^)↗!呵呵~本次灵感来自软件爆破原理,利用此原理可以改进重启程序后需要再次输入序列号的缺陷.....并增加了一个比较实用的功能,用U盘给自己的电脑加锁...
原理:每次开机都会检测所指定的磁盘里的文件名(所以要设定开机启动项),如果有则为合法用户,可正常使用计算机。没有则视为非法用户,开机后由你指定的时间(秒\t)关机~
所指定的文件名可以自定,程序会在该可移动磁盘中创建一个由你指定的文件名的文件...如果U盘存在该文件则以该文件为开机密钥~~~
  注意,此程序只检测文件名,并不检测里面的内容..如果您输入的为te12.txt 那么只要您指定的磁盘根目录有文件是此文件名即可当成为开机密钥,(如果没有则程序自动创建该文件)这意味着磁盘里的每一个文件(任何格式都可以)都可当成开机密钥,增强隐蔽性,所以你可以在tr12.txt里面加上一些内容加以掩饰~~~
如果万一U盘被损坏,可以在其他U盘新建一个由你在程序设定的文件名命名的文件即可~~~
程序下载地址:加锁文件  点击即可下载
图片:



源代码:
  1. #include<stdio.h>/*加载包含基本输入输出函数头文件*/
  2. #include<stdlib.h>/*加载标准函数库头文件*/
  3. #include<string.h>
  4. #include<windows.h>

  5. int i=3,a=0,d=0;/*声明全局变量*/
  6. /*原型函数声明*/
  7. int xieru();
  8. int yanzhen();
  9. int zhu();
  10. int tishi();
  11. int yizhuce();
  12. int jiamiweizhuce();
  13. int jiamiyizhuce();
  14. int jiemiweizhuce();
  15. int jiemiyizhuce();
  16. int u();
  17. int autoo();
  18. int dell();

  19. int main()/*声明主函数,每个C程序必须具备的*/
  20. {
  21.     system("COLOR 0a");
  22.     system("title 欢迎使用由【笨笨♂猪】设计的程序~~");
  23. printf("\n\t                    灵感\n\n\t   ↖(^ω^)↗哈哈,一个月嘞,在惠州实践了\n\t22天,╮(╯▽╰)╭~~当普工简直是堕落,本\n\t来满满的自信和积极的上进心,在那不过几天,\n\t就差点全被侵蚀掉了..真恐怖!还好那些管理\n\t员蛮不错,就是有些员工超猥琐的!也有些员\n\t工很黄很暴力⊙﹏⊙b汗..更离谱的是居然调\n\t戏女学生..吖的,超想买块豆腐砸死他们!! \n\t(#‵′)靠~..\n\t  笨笨猪,谢谢你!谢谢你在我最失落时给我\n\t动力,给我信心!让我的C再次突破!我们是最\n\t棒的↖(^ω^)↗!呵呵~本次灵感来自软件爆破\n\t原理,利用此原理可以改进重启程序后需要再\n\t次输入序列号的缺陷。还有个缺陷是只能加解\n\t密9位数字,我觉得应该是产生溢出了吧,郁闷~~\n\t这次加上了比较实用的功能=》用U盘给电脑加锁..\n\n\n\n");
  24. system("pause");/*程序挂起*/
  25. system("cls");
  26. yanzhen();
  27. }
  28. /***************************************主调代码*******************************************/
  29. int zhu()/*自定义zhu函数*/
  30.     {
  31.     int a,i=3;/*声明整数变量a、i,并把赋值3给i*/
  32.        printf("\n********************************************************************");
  33.        printf("\n   此程序为C语言编写,编译器为:DEV-C++ 4.9.9.2 多国语言版");
  34.    printf("\n\n   愿结交对C语言深感兴趣并研究过C语言的朋友\n   若有任何建议或愿共同探讨请联系QQ:0000000000\n   加密方面,采用垃圾算法,纯属做练习,各位不必当真。\n");
  35.   
  36.    printf("\n********************************************************************\n");
  37.   
  38.    printf("\n作品名称:加锁程序(原:数字密码加密程序三次改进版)\n\n作品目的:增加对条件指令、循环指令的了解并熟悉自定义函数、调用函数的方法、文件            处理指令,以及DOS命令\n\n作品功能:a:实现注册验证及对数字进行加密、解密功能\n          b:了解加入开机启动项的方法和利用文件处理知识..实现移动设备对电脑进行加          锁功能\n\n作品改进:利用软件爆破原理改进了程序输入正确序列号重启后仍需再次输入序列号的缺陷\n作品缺陷:程序判断用户的选择只能用数字否则出错(尝试用过char类型),只能加密\n          9位数字否则不能正确解密 以上原因尚不明确!\n");
  39.       printf("\n********************************************************************\n");
  40.       system("pause");
  41.       system("cls");
  42.    
  43.    printf("\n\n   O(∩_∩)O哈哈~,请选择所需要的功能:\n\n 【1】:加密(目前只支持9位任意数字)\n\n 【2】:解密(只对本程序加密的密文有效)\n\n 【3】:用可移动磁盘(如U盘)加锁计算机(需注册用户)\n\n 【4】:注册\n\n 【0】:退出\n\n  ");
  44.    scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/

  45. while(a>4)/*设定循环条件,达到输入错误选项即可循环执行确认选择功能指令*/
  46. {
  47.            printf("\n\n   O(∩_∩)O哈哈~,不能乱选哦,请再次认真选择所需要的功能:\n\n 【1】:加密(目前只支持9位任意数字)\n\n 【2】:解密(只对本程序加密的密文有效)\n\n 【3】:用可移动磁盘(如U盘)加锁计算机(需注册用户)\n\n 【4】:注册\n\n  【0】:退出\n\n  ");
  48.    scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/
  49.            }
  50. switch(a)/*判断语句,在c++称为开关语句*/
  51. {
  52. case 1:/*若a等于1则运行下面代码*/
  53.    printf("\n   (*^__^*) 欢迎使用本加密程序【注:试用版只能使用三次】\n");/*显示说明*/
  54.    printf("请输入序列号:\n\n  ");/*显示说明*/
  55.    scanf("%d",&a);/*读取用户所输入的序列号并赋值给变量a*/
  56.   if(a!=0000000000)/*若用户所输入的序列号不等于0000000000则执行下面的指令,否则跳过下面的指令*/

  57. jiamiweizhuce();/*调用jiamiweizhuce函数*/

  58.   else/*若等于0000000000则运行下面指令*/
  59. {
  60. xieru();
  61.   jiamiyizhuce();/*调用jiamiyizhuce函数*/
  62. }
  63. break;/*跳出判断语句避免“失败经过”*/
  64. case 2:/*如果a等于2则运行下面代码*/
  65.    printf("\n   (*^__^*) 欢迎使用本解密程序【注:试用版只能使用三次】\n");/*显示说明*/
  66.    printf("请输入序列号:\n\n  ");/*显示说明*/
  67.    scanf("%d",&a);/*读取用户所输入的序列号并赋值给变量a*/
  68.   if(a!=0000000000)/*若用户所输入的序列号不等于0000000000则执行下面的指令,否则跳过下面的指令*/
  69.   jiemiweizhuce();/*调用jiemiweizhuce代码*/
  70.   else/*若等于0000000000则运行下面指令*/
  71. {
  72. xieru();
  73. jiemiyizhuce();/*调用jiemiyizhuce函数*/
  74. }
  75. break;/*跳出判断语句避免“失败经过”*/
  76. case 3:
  77.      printf("\n对不起!您是未注册用户...\n");
  78.      system("pause");
  79.      zhu();
  80. case 4:
  81.      for(;;)
  82.      {
  83.      printf("请输入序列号:");
  84.      scanf("%d",&i);
  85.      if(i!=0000000000)
  86.      {
  87.      printf("\n晕~~请再到我空间看清源代码~~\n");
  88.      continue;
  89.      }
  90.      else{
  91.      xieru();
  92.      printf("\a\aO(∩_∩)O~~注册成功咯!哈~~~\n");
  93.      system("pause");
  94.      yanzhen();
  95.      }
  96.      }
  97.      
  98. case 0:/*若a等于0则运行下面代码*/
  99. exit(0);/*退出程序*/
  100. break;/*跳出判断语句避免“失败经过”*/
  101. }
  102. }

  103. int tishi()/*自定义tishi函数*/
  104. {
  105.     int q;/*声明变量*/
  106.     printf("\n\a\a\a   ╮(╯▽╰)╭对不起,您使用的次数已达到试用版的上限!\n\n"); /*警告用户*/
  107. printf("\n\n\nO(∩_∩)O哈哈~,告诉你一个秘密哈,若想再次使用可以再次运行本程序,照样\n还可以使用三次。不过,如果你这样做的话,也只能说明你笨╮(╯▽╰)╭\n\n\n");/*幽默一下哈↖(^ω^)↗*/
  108. printf("\n返回主菜单请输入数字【3】,退出请输入任意数字\n\n  ");/*提示*/
  109. scanf("%d",&q);/*读取用户所输入数值并存入变量q*/
  110. if(q==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
  111. zhu();
  112. else/*若不等于则运行下面代码即退出,达到按任意数字键退出的目的*/
  113. exit(0);/*退出程序*/
  114. }
  115. int yizhuce()/*自定义yizhuce函数*//*此函数已去除验证序列号的功能*/
  116.     {
  117.     int a;/*声明整数变量a、i,并把赋值3给i*/
  118.       printf("\n********************************************************************");
  119.        printf("\n   此程序为C语言编写,编译器为:DEV-C++ 4.9.9.2 多国语言版");
  120.    printf("\n\n   愿结交对C语言深感兴趣并研究过C语言的朋友\n   若有任何建议或愿共同探讨请联系QQ:0000000000\n   加密方面,采用垃圾算法,纯属做练习,各位不必当真。\n");
  121.   
  122.    printf("\n********************************************************************\n");
  123.   
  124.    printf("\n作品名称:加锁程序(原:数字密码加密程序三次改进版)\n\n作品目的:增加对条件指令、循环指令的了解并熟悉自定义函数、调用函数的方法、文件            处理指令,以及DOS命令\n\n作品功能:a:实现注册验证及对数字进行加密、解密功能\n          b:了解加入开机启动项的方法和利用文件处理知识..实现移动设备对电脑进行加          锁功能\n\n作品改进:利用软件爆破原理改进了程序输入正确序列号重启后仍需再次输入序列号的缺陷\n作品缺陷:程序判断用户的选择只能用数字否则出错(尝试用过char类型),只能加密\n          9位数字否则不能正确解密(此BUG与算法无关),无论注册码是否正确重启\n          程序后需再次输入序列号.以上原因尚不明确!\n");
  125.       printf("\n********************************************************************\n");
  126.       system("pause");
  127.       system("cls");
  128.    
  129.    printf("\n\n   O(∩_∩)O哈哈~,请选择所需要的功能:\n\n 【1】:加密(目前只支持9位任意数字)\n\n 【2】:解密(只对本程序加密的密文有效)\n\n 【3】用可移动磁盘(如U盘)加锁计算机\n\n 【0】:退出\n\n  ");
  130.    scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/

  131. while(a>3)/*设定循环条件,达到输入错误选项即可循环执行确认选择功能指令*/
  132. {
  133.            printf("\n\n   O(∩_∩)O哈哈~,不能乱选哦,请再次认真选择所需要的功能:\n\n 【 【1】:加密(目前只支持9位任意数字)\n\n 【2】:解密(只对本程序加密的密文有效)\n\n 【3】用可移动磁盘(如U盘)加锁计算机\n\n 【0】:退出\n\n  ");
  134.    scanf("%d",&a);/*读取用户所输入的选项并赋值给变量a*/
  135.            }
  136. switch(a)/*判断语句,在c++称为开关语句*/
  137. {
  138. case 1:/*若a等于1则运行下面代码*/
  139. jiamiyizhuce();/*调用jiamiyizhuce函数*/
  140. break;/*跳出条件语句避免“失败经过”*/
  141. case 2:/*若a等于2则运行下面代码*/
  142. jiemiyizhuce();/*调用jiemiyizhuce函数*/
  143. break;/*跳出条件语句避免“失败经过”*/
  144. case 3:
  145.      {
  146.      u();
  147.      zhu();
  148.      }
  149. case 0:/*若a等于0则运行下面代码*/
  150. exit(0);/*退出程序*/
  151. break;/*跳出条件语句避免“失败经过”*/
  152. }
  153. }
  154. /*************************主调用代码**************************/

  155. /*******************************功能实现代码**********************************/

  156. /******************************加密功能代码************************************************/
  157. int jiamiweizhuce()/*声明自定义jiamiweizhuce函数(未注册限制使用)同时声明变量*/
  158. {
  159. /*以下为未注册限制代码↓↓*/
  160.     while(i!=0)/*循环语句,设定条件为3次,由声明变量时确定,达到三次后跳出循环停止运行算法*/
  161.    {
  162.     printf("\n请输入一组需加密的数字【未注册】\n\n  ");/*显示说明*/
  163.     scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/
  164.     a=a+100000;/*进行加密算法↓↓*/
  165.     a=a+100009;
  166.     a=a+100052;
  167.     a=a+100878;
  168.     a=a+108546;
  169.     a=a+113545;
  170.     a=a+314123;/*进行加密算法↑↑*/
  171.     i--;/*运行算法一次则i减1,达到三次后满足循环条件即运行3次算法,则i=3-3=0*/
  172.     printf("\n\n~\a\(≧▽≦)/~恭喜,已完成加密!密文为:【%d】(还有【%d】次使用权)\n\n",a,i);/*算法完成输出密文并提醒使用次数*/
  173.     printf("\n返回主菜单请输入数字【3】,继续加密请输入任意数字\n\n  ");/*提示*/
  174.     scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/
  175.     if(d==3)/*若变量d等于3则强制跳出循环*/
  176.     break;/*强制跳出循环*/
  177. }
  178. if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
  179. zhu();
  180. tishi();
  181. }
  182. int jiamiyizhuce()/*声明自定义jiamiyizhuce函数(已注册无限制使用)*/
  183. {
  184.      /*以下为已注册无限制代码↓↓*/
  185.     for(;;)/*循环语句,不设定条件,可无限次运行算法指令*/
  186.    {
  187.     printf("\n请输入一组需加密的数字【已注册,可无限使用】\n\n  ");/*显示说明*/
  188.     scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/
  189.     a=a+100000;/*进行加密算法↓↓*/
  190.     a=a+100009;
  191.     a=a+100052;
  192.     a=a+100878;
  193.     a=a+108546;
  194.     a=a+113545;
  195.     a=a+314123;/*进行加密算法↑↑*/
  196.     printf("\n\n\a~\(≧▽≦)/~恭喜,已完成加密!密文为:【%d】\n\n",a);/*算法完成,输出密文*/
  197.     printf("\n返回主菜单请输入数字【3】,继续加密请输入任意数字\n\n  ");/*提示*/
  198.     scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/
  199.     if(d==3)/*若变量d等于3则强制跳出循环*/
  200.     break; /*强制跳出循环*/
  201. }
  202. if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
  203. yizhuce();
  204. }
  205. /******************************加密功能代码************************************************/

  206. /******************************解密功能代码************************************************/
  207.     int jiemiweizhuce()/*声明解密未注册(限制使用)函数*/
  208. {
  209.       /*以下为未注册限制代码↓↓*/
  210.     while(i!=0)/*循环语句,设定条件为3次,达到三次后跳出循环语句即i等于3*/
  211.    {
  212.     printf("\n请输入一组需解密的数字【未注册】\n\n  ");/*显示说明*/
  213.     scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/
  214.     a=a-100000;/*逆行执行加密算法↓↓*/
  215.     a=a-100009;
  216.     a=a-100052;
  217.     a=a-100878;
  218.     a=a-108546;
  219.     a=a-113545;
  220.     a=a-314123;/*逆行执行加密算法↑↑*/
  221.     i--;/*运行算法一次则i减一,达到三次后满足循环条件*/
  222.     printf("\n\a   ~\(≧▽≦)/~恭喜,已完成解密!密码为:【%d】(还有【%d】次使用权)\n\n",a,i);
  223.        printf("\n返回主菜单请输入数字【3】,继续解密请输入任意数字\n\n  ");/*提示*/
  224.     scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/
  225.     if(d==3)/*若变量d等于3则强制跳出循环*/
  226.     break;/*强制跳出循环*/
  227. }
  228. if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
  229. zhu();
  230. tishi();
  231. }
  232.     int jiemiyizhuce()/*声明解密已注册(解除限制)函数*/
  233.     {
  234.              /*以下为已注册无限制代码↓↓*/
  235.     for(;;)/*循环语句,不设定条件*/
  236.    {
  237.     printf("\n请输入一组需解密的数字【已注册,可无限使用】\n\n  ");/*显示说明*/
  238.     scanf("%d",&a);/*读取用户所输入的数值并赋值给变量a*/
  239.     a=a-100000;/*逆行执行加密算法↓↓*/
  240.     a=a-100009;
  241.     a=a-100052;
  242.     a=a-100878;
  243.     a=a-108546;
  244.     a=a-113545;
  245.     a=a-314123;/*逆行执行加密算法↑↑*/
  246.     printf("\n\n\a   ~\(≧▽≦)/~恭喜,已完成解密!密码为:【%d】\n\n",a);/*算法完成输出真实密码*/
  247.     printf("\n返回主菜单请输入数字【3】,继续解密请输入任意数字\n\n  ");/*提示*/
  248.     scanf("%d",&d);/*读取用户所输入的数值并存入变量d*/
  249.     if(d==3)/*若变量d等于3则强制跳出循环*/
  250.     break; /*强制跳出循环*/
  251. }
  252. if(d==3)/*若变量d等于3则运行以下代码,否则省略本段代码*/
  253. yizhuce();
  254.     }
  255. /******************************解密功能代码************************************************/

  256. /******************************U盘加锁代码************************************************/
  257. int u()
  258. {
  259.     system("cls");
  260.     FILE *p;
  261.     char pan[2]={0},password[50]={0},pd[]={"if not exist "},fu[]={":\\"},exi[]={" shutdown.exe -s -t "},ok[50],k[100],j[60];
  262.     printf("\n\n\t【1】为计算机加锁\n\n\t【2】清除加锁功能\n\n\t【3】返回\n\n\t");
  263.     scanf("%d",&i);
  264.     if(i==1)
  265.     {
  266. system("cls");
  267.     printf("\n\n\t原理:每次开机都会检测所指定的磁盘里的文件名(所以要设定开机启动项),如果\n\t有则为合法用户,可正常使用计算机。没有则视为\"小偷\"开机后由您指定的时间(秒\t)关机~");
  268.     printf("所指定的文件名可以自定,程序会在该可移动磁盘中创建一个由你指定的文         件名的文件\n");
  269.     printf("\n\t注意,此程序检测文件名,并不检测里面的内容..如果您输入的为te12.txt 那么         只要您指定的磁盘根目录有文件是此文件名即可当成为开机密钥\n\t(这意味着磁盘里的每一个文件都可当成开机密钥,增强隐蔽性),所以你可以在tr12         .txt里面加上一些内容加以掩饰\n\n");

  270.     printf("\n\t请确定是否已插入可移动磁盘~~~~\n");
  271.     system("pause");
  272.     text:
  273.     printf("\n\n请输入可移动磁盘盘符(输入字母即可,如输入g):");
  274.     scanf("%s",pan);
  275.     printf("\n\n请设定程序需检测认证可移动磁盘根目录上的文件名(也可以自定文件名):");
  276.     scanf("%s",password);
  277. /****************检测是否有该文件存在*******************/
  278.     strcpy(ok,pan);
  279.     strcat(ok,fu);
  280.     strcat(ok,password);
  281.    if((p=fopen(ok,"r"))==NULL)
  282. {
  283. printf("\n\n╮(╯_╰)╭检测可移动磁盘无您指定的文件名,程序将自动创建此文件\n");
  284. p=fopen(ok,"w");
  285. if((p=fopen(ok,"r"))==NULL)
  286. {
  287. printf("\n\n╮(╯_╰)╭无法写入..请确定可移动磁盘是否被设为写保护或接口接触不良..\n\n");
  288. printf("\n\n重新配置请输入1,返回输入0,任意输入则退出");
  289. scanf("%d",&i);
  290. if(i==1)
  291. goto text;
  292. else if(i==0)
  293. return 0;
  294. else
  295. exit(0);
  296. }
  297. else
  298. printf("\n\n\\(^o^)/~文件创建成功...");

  299. }
  300. /****************检测是否有该文件存在*******************/
  301.     printf("\n\n请设定无此密码文件时登陆系统后关机时间(秒)(建议输入0,即开机后立即关机):");
  302.     scanf("%s",j);
  303.     strcpy(k,pd);
  304.     strcat(k,pan);
  305.     strcat(k,fu);
  306.     strcat(k,password);
  307.     strcat(k,exi);
  308.     strcat(k,j);
  309.    

  310. if((p=fopen("C:\\WINDOWS\\love.bat","w"))==NULL)
  311. {
  312. printf("\n\n\a对不起,可能因为系统盘被写保护,无法写入配置文件....\n");
  313. system("pause");
  314. }
  315. else
  316. {
  317. fprintf(p,k);
  318. fclose(p);
  319. printf("\n\n即将设为开机启动项..安全防护软件可能会提示请按同意..\n");
  320. system("pause");
  321. autoo();
  322. printf("\n\n已设置完成..重启后立即生效~\n");
  323. }

  324. system("pause");
  325. system("cls");
  326. return 0;
  327. }
  328. else if(i==2)
  329. dell();
  330. else if(i==3)
  331. yanzhen();
  332. else
  333. exit(0);
  334. }


  335.      

  336. /******************************U盘加锁代码************************************************/
  337.    
  338. /*******************************功能实现代码**********************************/

  339. /***************************注册信息保存代码************************/
  340. int xieru()
  341. {
  342. FILE *fptr;
  343. char name[20]={"\\(^o^)/~,成功咯~"};
  344. if((fptr=fopen("C:\\WINDOWS\\system32\\爱梦想.love","w"))==NULL)
  345. {
  346. printf("\n\t晕啊~注册信息保存失败..是不是装了什么磁盘保护软件呢?或者中病毒?\n");
  347. system("pause");
  348. }
  349. else
  350. {
  351. fprintf(fptr,name);
  352. fclose(fptr);
  353. }
  354. return 0;
  355. }
  356. /***************************注册信息保存代码************************/

  357. /***************************注册信息读取代码************************/
  358. int yanzhen()
  359. {
  360.     FILE *fptr;
  361.     int i;
  362.     char a[]={"\\(^o^)/~,成功咯~"},d[20];
  363.     if((fptr=fopen("C:\\WINDOWS\\system32\\爱梦想.love","r"))==NULL)
  364.     zhu();
  365.     else
  366.     {
  367.         for(i=0;!feof(fptr);i++)
  368.      {
  369.           d[i]=fgetc(fptr);

  370. }
  371. fclose(fptr);
  372. if(a[6]==d[6])
  373. yizhuce();
  374. else
  375. zhu();
  376. }     
  377. }
  378. /***************************注册信息读取代码************************/

  379. /***************************设置开机启动项代码***********************/
  380. /*设置开机启动*/
  381. int autoo()
  382. {
  383. char regname[]="Software\\Microsoft\\Windows\\CurrentVersion\\Run";
  384. HKEY hkResult;
  385. int ret=RegOpenKey(HKEY_LOCAL_MACHINE,regname,&hkResult);
  386. ret=RegSetValueEx(hkResult,"love.bat"/* 注册表键名*/,0,REG_EXPAND_SZ,(unsigned char *)"%systemroot%\\love.bat",25);
  387. if(ret==0){
  388. printf("\n\n成功加入启动项\n");
  389. RegCloseKey(hkResult);
  390. }
  391. else {
  392. printf("\n\n\a对不起,可能因为安全防护软件阻拦,无法设为开机自启动....\n");
  393. system("del %systemroot%\\love.bat");

  394. printf("\n\n\t重新配置请输入1,返回输入0,任意输入则退出");
  395. scanf("%d",&i);
  396. if(i==1)
  397. u();
  398. else if(i==0)
  399. return 0;
  400. else
  401. exit(0);
  402. }
  403. }
  404. /*清除开机启动*/
  405. int dell()
  406. {
  407. char regname[]="Software\\Microsoft\\Windows\\CurrentVersion\\Run";
  408. HKEY hkResult;
  409. int ret=RegOpenKey(HKEY_LOCAL_MACHINE,regname,&hkResult);
  410. ret=RegSetValueEx(hkResult,"love.bat"/* 注册表键名*/,0,REG_EXPAND_SZ,(unsigned char *)"%systemroot%\\love.bat",25);
  411. if(ret==0){
  412.            
  413. printf("\n\n\t成功清除启动项\n");
  414. RegCloseKey(hkResult);
  415. system("del %systemroot%\\love.bat");
  416. printf("\n\n\t成功删除配置文件");
  417. printf("\n\n\t成功清除开机加锁功能~~~");
  418. printf("\n\n\t重新配置请输入1,返回输入0,任意输入则退出");
  419. scanf("%d",&i);
  420. if(i==1)
  421. u();
  422. else if(i==0)
  423. zhu();
  424. else
  425. exit(0);
  426. }
  427. else {
  428. printf("\n\n\a对不起,可能因为安全防护软件阻拦,无法清除开机自启动....");

  429. printf("\n\n重新配置请输入1,返回输入0,任意输入则退出");
  430. scanf("%d",&i);
  431. if(i==1)
  432. u();
  433. else if(i==0)
  434. zhu();
  435. else
  436. exit(0);
  437. }
  438. }

  439. ======================================================================
复制代码




回复

使用道具 举报

6#
ID:98252 发表于 2015-12-4 00:40 | 只看该作者
只能加密9位数是因为你scanf输入的类型是整型,整型最多能表示三亿多,也就九位数。我是刚开始学c的新人,只能帮你到这了。。。。哈哈。
回复

使用道具 举报

7#
ID:288293 发表于 2018-3-6 16:54 | 只看该作者
谢谢楼主,表情包真有爱,真棒
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表