久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 23546|回復: 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. *********************************源代碼****************************************
復制代碼


回復

使用道具 舉報

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;/*跳出條件語句避免“失敗經過”*/
}
}
==========================================================================

回復

使用道具 舉報

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. ======================================================================
復制代碼




回復

使用道具 舉報

ID:98252 發表于 2015-12-4 00:40 | 顯示全部樓層
只能加密9位數是因為你scanf輸入的類型是整型,整型最多能表示三億多,也就九位數。我是剛開始學c的新人,只能幫你到這了。。。。哈哈。
回復

使用道具 舉報

ID:288293 發表于 2018-3-6 16:54 | 顯示全部樓層
謝謝樓主,表情包真有愛,真棒
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线播放中文 | 国产精品久久久久久婷婷天堂 | 日韩在线视频精品 | 日韩成人一区二区 | 国产精品福利在线观看 | 日日操天天射 | 久久精品美女 | 欧美激情国产日韩精品一区18 | 国产综合在线视频 | 三级视频在线观看电影 | 久久久www成人免费无遮挡大片 | 天天躁日日躁aaaa视频 | 怡红院成人在线视频 | 欧美一区精品 | 国产日韩一区二区三区 | 久久视频精品 | 国产激情一区二区三区 | 男人的天堂亚洲 | 亚洲理论在线观看电影 | 免费的色网站 | 91成人免费电影 | 精品久久一区 | 久久精品黄色 | 中文字幕第十五页 | 久久久国产一区 | av电影一区二区 | 91精品久久久久久久久久入口 | 最新中文在线视频 | 国产精品久久久久久久久久东京 | 九九热精品视频在线观看 | 成人3d动漫一区二区三区91 | 午夜影院在线观看免费 | www精品美女久久久tv | 日韩一级免费电影 | 亚洲美女一区二区三区 | 成人二区 | 午夜在线精品偷拍 | 亚洲激精日韩激精欧美精品 | 国产一区二区在线播放 | 日本精品一区二区三区在线观看视频 | 国产精品久久久久久中文字 |