當前位置:首頁 » 操作系統 » 源代碼與演算法

源代碼與演算法

發布時間: 2023-03-07 10:28:18

① 知道源代碼有什麼好處源代碼的用途是什麼

一、源代碼用途:

生成目標代碼,即計算機可以識別的代碼。

對軟體進行說明,即對軟體的編寫進行說明。為數不少的初學者,甚至少數有經驗的程序員都忽視軟體說明的編寫,因為這部分雖然不會在生成的程序中直接顯示,也不參與編譯。但是說明對軟體的學習、分享、維護和軟體復用都有巨大的好處。因此,書寫軟體說明在業界被認為是能創造優秀程序的良好習慣,一些公司也硬性規定必須書寫。

需要指出的是,源代碼的修改不能改變已經生成的目標代碼。如果需要目標代碼做出相應的修改,必須重新編譯。

二、源代碼好處:

1、它們能降低企業部署網路和各種服務的成本,如果採用開源方案,你只需要一台伺服器,其他的都可以免費,而用windows,你必須花錢購買操作系統(假設沒有盜版)。

2、可以在源代碼的基礎上進行二次開發,完善或豐富現有系統功能。

3、參考學習。通過分析源代碼,可以學習開發、了解開發者的思路,學習開發者如何通過巧妙的方式、演算法解決業務問題,閱讀源代碼是提高開發水平的快捷方式。

4、擁有源代碼,可以占據主動權。如果開發方在後期對運維或增加功能方面,報價遠超市場價,委託方有源代碼的話,可以考慮更換開發方,而不會因此造成整套軟體重寫。

② 游戲源代碼有什麼用

問題一:源代碼在游戲中的作用 網路游戲源代碼就是游戲的基礎,在外行人眼裡是無數行的英文和數字,其實就是一組程序。
作用當然是開發游戲啦。
手上擁有了源代碼就可以製作游戲,當然如果你啥都不改,那功能就和原來的游戲沒什麼兩樣。
現在網上你可以搜索一下網路游戲的源代碼還是非常多的,但是大多數都是不完整的,也就是說你即便得到了也無法用。
另外只要這款游戲是國產的,你如果一模一樣也不行,因為違反版權。
所以就算你拿到了源代碼,你也要有完整的美術資源,需要讓程序貼圖替換上去,達到視覺上不一樣的效果。世界背景和故事都要換,所有這些的成本當然不是一般的高。
好吧,即便你搞好了,那接下來你還要運營吧,運營的成本就更高了。

問題二:游戲代碼到底有什麼用,詳細一點 5分 游戲代碼嗎?代碼並不是什麼很神秘的東西,你把編程語言的基礎學好了,什麼都會知道的了。

問題三:源代碼怎麼用的啊??有的游戲給 有的程序個給的那個 不知道你玩的啥游戲,但是看樣子估計是c++代碼,我英文學的不好
從英文描述中我猜測這是v c++的代碼,「」在代碼中表示注釋,前三行是注釋,其大意如下:
stdafx.cpp :源文件,包括剛才的標准單元?
fixyou.pch將是預編譯的標題
stdafx.obj將包含預編譯的類型信息
「cpp」明顯是c++源碼文件的縮寫名,而最後一行是頭文件。
所謂頭文件預編譯,就是把一個工程(Project)中使用的一些MFC標准頭文件(如Windows.H、Afxwin.H)預先編譯,以後該工程編譯時,不再編譯這部分頭文件,僅僅使用預編譯的結果。這樣可以加快編譯速度,節省時間。
預編譯頭文件通過編譯stdafx.cpp生成,以工程名命名,由於預編譯的頭文件的後綴是「pch」,所以編譯結果文件是projectname.pch。
編譯器通過一個頭文件stdafx.h來使用預編譯頭文件。stdafx.h這個頭文件名是可以在project的編譯設置里指定的。編譯器認為,所有在指令#include stdafx.h前的代碼都是預編譯的,它跳過#include stdafx. h指令,使用projectname.pch編譯這條指令之後的所有代碼。
因此,所有的CPP實現文件第一條語句都是:#include stdafx.h。
其實我學的pascal,所以對c++了解的少,如果你真的想學會他,還是自己找幾本c++的書學一下,這樣才能「使用」代碼得心應手。

問題四:游戲源代碼怎麼使用 樓上請不要那樣你難道沒有初學的時候嗎??這是一個欲編譯頭文件 按例說只是源代碼的非常小的一部分你可以用Visual Studio 2005打開

問題五:手機游戲源代碼是什麼,怎麼使用 不知道你玩的啥游戲,但是看樣子估計是c++代碼,我英文學的不好
從英文描述中我猜測這是v c++的代碼,「」在代碼中表示注釋,前三行是注釋,其大意如下:
stdafx.cpp :源文件,包括剛才的標准單元?
fixyou.pch將是預編譯的標題
stdafx.obj將包含預編譯的類型信息
「cpp」明顯是c++源碼文件的縮寫名,而最後一行是頭文件。
所謂頭文件預編譯,就是把一個工程(Project)中使用的一些MFC標准頭文件(如Windows.H、Afxwin.H)預先編譯,以後該工程編譯時,不再編譯這部分頭文件,僅僅使用預編譯的結果。這樣快編譯速度,節省時間。
預編譯頭文件通過編譯stdafx.cpp生成,以工程名命名,由於預編譯的頭文件的後綴是「pch」,所以編譯結果文件是projectname.pch。
編譯器通過一個頭文件stdafx.h來使用預編譯頭文件。stdafx.h這個頭文件名是可以在project的編譯設置里指定的。編譯器認為,所有在指令#include stdafx.h前的代碼都是預編譯的,它跳過#include stdafx. h指令,使用projectname.pch編譯這條指令之後的所有代碼。
因此,所有的CPP實現文件第一條語句都是:#include stdafx.h。
其實我學的pascal,所以對c++了解的少,如果你真的想學會他,還是自己找幾本c++的書學一下,這樣才能「使用」代碼得心應手。

問題六:游戲源碼一般都是用什麼語言寫的? 編寫單機 PC/主機游戲現在都是 C++ 加上一個腳本語言(比如 Lua,這地方不需要腳本引擎多麼高性能,夠用就好)。游戲的架構是引擎 + 游戲邏輯,兩者代碼量是引擎遠遠大於游戲邏輯。商業游戲往往引擎是重用多於自研,所以那些大型游戲的代碼也不是全部都是一行一行敲出來的――很可能其中許多內容是買來的。
網游服務端則一般是自研,這個真是一行一行敲了。網游 EVE 的伺服器完全是照著超算的標准修的,演算法也完全是超算的演算法。編寫單機 PC/主機游戲現在都是 C++ 加上一個腳本語言(比如 Lua,這地方不需要腳本引擎多麼高性能,夠用就好)。游戲的架構是引擎 + 游戲邏輯,兩者代碼量是引擎遠遠大於游戲邏輯。商業游戲往往引擎是重用多於自研,所以那些大型游戲的代碼也不是全部都是一行一行敲出來的――很可能其中許多內容是買來的。

問題七:我有C++一個游戲的源代碼,但是要怎麼運行?

問題八:c語言編寫的小游戲源代碼在什麼環境下可以運行 如果源代碼埂有.C(或者.cpp)和.h類型的文件,你可以嘗試用TC或者BC打開後編譯運行;
如果源代碼還包括.dsw或者.dsp類型的文件,你可以試試用VC6或VC++.NET打開後編譯運行。

問題九:C++做一個小游戲,有源代碼的最好,謝謝 #include
#include
#include
#include
#include
#include 時間 文件
#include
#define random(x)(rand()%x)
using namespace std;
void thunder(int Dif,int Row,int Column,char *USer)
{
int r,c,alls[22][22],backstage[22][22]={0};
srand((int)time(0));
for(r=1;r(*||數字) 的個數 贏的時候停止循環)
for(c=1;c>

問題十:源代碼在游戲中的作用 網路游戲源代碼就是游戲的基礎,在外行人眼裡是無數行的英文和數字,其實就是一組程序。
作用當然是開發游戲啦。
手上擁有了源代碼就可以製作游戲,當然如果你啥都不改,那功能就和原來的游戲沒什麼兩樣。
現在網上你可以搜索一下網路游戲的源代碼還是非常多的,但是大多數都是不完整的,也就是說你即便得到了也無法用。
另外只要這款游戲是國產的,你如果一模一樣也不行,因為違反版權。
所以就算你拿到了源代碼,你也要有完整的美術資源,需要讓程序貼圖替換上去,達到視覺上不一樣的效果。世界背景和故事都要換,所有這些的成本當然不是一般的高。
好吧,即便你搞好了,那接下來你還要運營吧,運營的成本就更高了。

③ upx 的詳細演算法和源代碼最好是asm的,c的也行

開源,有源碼,你去它們的主站上去下就行了。
upx的代碼應該是src目錄下,是C++類的,壓縮演算法庫是UCL,版本2.0以後的加了lzma。不知道是什麼編譯器,有makefile ,可能是linux的,我也沒編譯過。
當時是為了寫它的脫殼機,所以看它如何加殼的部分不多,主要還是看脫殼部分的。脫殼部分的有匯編,自己找找吧。

④ 什麼是源代碼怎麼編寫求高人指教

我給你打個形象的比方。程序員是和電腦打交道的,但程序員寫程序時,用的是我們人類的語言,或者說是用一些規定過的人類的語言,比如說我們熟悉的
java.那麼程序員寫出來的這個東西就是原代碼。原代碼經過翻譯,會變成電腦能識別的語言,這樣計算機就能做程序員所要求的事了。
編成你需要掌握一門語言,用該語言的語法去編寫程序。

⑤ 求RSA演算法的源代碼(c語言)

這個是我幫個朋友寫的,寫的時候發現其實這個沒那麼復雜,不過,時間復雜度要高於那些成型了的,為人所熟知的rsa演算法的其他語言實現.
#include
int
candp(int
a,int
b,int
c)
{
int
r=1;
b=b+1;
while(b!=1)
{
r=r*a;
r=r%c;
b--;
}
printf("%d",r);
return
r;
}
void
main()
{
int
p,q,e,d,m,n,t,c,r;
char
s;
{printf("input
the
p:\n");
scanf("%d\n",&p);
printf("input
the
q:\n");
scanf("%d%d\n",&p);
n=p*q;
printf("so,the
n
is
%3d\n",n);
t=(p-1)*(q-1);
printf("so,the
t
is
%3d\n",t);
printf("please
intput
the
e:\n");
scanf("%d",&e);
if(e<1||e>t)
{printf("e
is
error,please
input
again;");
scanf("%d",&e);}
d=1;
while
(((e*d)%t)!=1)
d++;
printf("then
caculate
out
that
the
d
is
%5d",d);
printf("if
you
want
to
konw
the
cipher
please
input
1;\n
if
you
want
to
konw
the
plain
please
input
2;\n");
scanf("%d",&r);
if(r==1)
{
printf("input
the
m
:"
);/*輸入要加密的明文數字*/
scanf("%d\n",&m);
c=candp(m,e,n);
printf("so
,the
cipher
is
%4d",c);}
if(r==2)
{
printf("input
the
c
:"
);/*輸入要解密的密文數字*/
scanf("%d\n",&c);
m=candp(c,d,n);
printf("so
,the
cipher
is
%4d\n",m);
printf("do
you
want
to
use
this
programe:yes
or
no");
scanf("%s",&s);
}while(s=='y');
}
}

⑥ 計算機寫代碼是什麼

問題一:計算機代碼是什麼意思 1.理論上的概念
源代碼是相對目標代碼和可執行代碼而言的。
源代碼就是用匯編語言和高級語言寫出來的地代碼。
目標代碼是指源代碼經過編譯程序產生的能被cpu直接識別二進制代碼。
可執行代碼就是將目標代碼連接後形成的可執行文件,當然也是二進制的。
2.最直觀的概念
在這個網頁上右鍵滑鼠,選擇查看源文件.出來一個記事本,裡面的內容就是此網頁的源代碼.
===================================================
關於兩者的區別聯系:
1.從字面意義上來講,源文件是指一個文件,指源代碼的 *** .源代碼則是一組具有特定意義的可以實現特定功能的字元(程序開發代碼).
2.源代碼在大多數時候等於源文件.
楓舞在上面說過2.最直觀的概念 在這個網頁上右鍵滑鼠,選擇查看源文件.出來一個記事本,裡面的內容就是此網頁的源代碼.這句話就體現了他們的關系,此處的源文件是指網頁的源文件,而源代碼就是源文件的內容,所以又可以稱做網頁的源代碼..

問題二:編寫代碼是在計算機哪裡寫 具體流程是怎樣的 謝謝 你要先有一個編譯器和一個文本編輯器
代碼就在文本編輯器中寫,寫完後用編譯器來編譯,最後得到可執行程序,再運行程序。
IDE就是集成了編輯器和編譯器的編程工具,建議你可以下載安裝一個VS2012旗艦版,網上有密鑰

問題三:計算機語言編寫代碼是什麼? 編寫的代碼是源代碼。源代碼經過編譯鏈接後成為機器碼。

問題四:寫代碼應該用什麼電腦系統好?? 系統無所謂,只是平台很重要,看你用的設么編程工具

問題五:計算機編程是什麼? 簡單的說,編程就是為了藉助於計算機來達到某一目的或解決某個問題,而使用某種程序設計語言編寫程序代碼,並最終得到結果的過程。
計算機雖然功能十分強大。可以供你上網、打游戲、管理公司人事關系等等,但是沒有程序,它就等於是一堆廢鐵,不會理會我們對它下達的「命令」。於是,我們要馴服它,只有通過一種方式――程序,這也是我們和計算機溝通的唯一方式。
那程序到底是什麼呢?
程序也就是指令的 *** ,它告訴計算機如何執行特殊的任務。
打個比方說,它好比指導你烹調菜品的菜譜或指揮行駛一路到達目的地的交警(或者交通路標)。沒有這些特殊的指令,就不能執行預期的任務。計算機也一樣,當你想讓計算機為你做一件事情的時候,計算機本身並不能主動為我們工作,因此我們必須對它下達指令,而它根本不會也不可能聽懂人類自然語言對事情的描述,因此我們必須使用程序來告訴計算機做什麼事情以及如何去做?甚至對最簡單的任務也需要指令,例如如何取得擊鍵,怎樣在屏幕上放一個字母,怎樣在磁碟中保存文件等等。
這么麻煩,連這些東西編程都要考慮!怪不得人家說編程好難!你錯了,其實許多這樣的指令都是現成的,包含在處理晶元中內置於操作系統中,因此我們不必擔心它們工作,他們都是由處理器和操作系統來完成的,並不需要我們來干預這些過程。
上面講到的計算機本身不會主動的做任何事情。因此我們要通過程序的方式來讓計算機為我們「效勞」。而這個過程就是我們「編」出來的。編程可以使用某一種程序設計語言來實現,按照這種語言的語法來描述讓計算機要做的事情。
我們這里所講的語法和外語中的語法完全兩碼事,這里講的語法只是讀你的程序書寫做出一寫規定而已。
寫出程序後,再由特殊的軟體將你的程序解釋或翻譯成計算機能夠識別的「計算機語言」,然後計算機就可以「聽得懂」你的話了,並會按照你的吩咐去做事了。因此,編程實際上也就是「人給計算機出規則」這么一個過程。
隨計算機語言的種類非常的多,總的來說可以分成機器語言,匯編語言,高級語言三大類。
電腦每做的一次動作,一個步驟,都是按照已經用計算機語言編好的程序來執行,程序是計算機要執行的指令的 *** ,而程序全部都是用我們所掌握的語言來編寫的。所以人們要控制計算機一定要通過計算機語言向計算機發出命令。
計算機所能識別的語言只有機器語言,即由構成的代碼。但通常人們編程時,不採用機器語言,因為它非常難於記憶和識別。
目前通用的編程語言有兩種形式:匯編語言和高級語言。
匯編語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。
匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。
高級語言是目前絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。由於省略了很多細節,所以編程者也不需要具備太多的專業知識。
高級語言主要是相對於匯編語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,如目前流行的VB、VC、FoxPro、Delphi等,這些語言的語法、命令格式都各不相同。
(1)解......>>

問題六:電腦編程里的代碼是什麼意思? 不同的編程語言代碼有不同的意思,就是實現不同的功能.
代碼如果是高級語言如C語言並不是和機器交流的語言,只有低級的語言如匯編語言才能和機器直接交流.但即使是匯編語言也是要用容易閱讀的代碼來寫,績後經過編譯器把那些代碼轉換成機器碼才能在電腦上運行.
當然,代碼的概念太寬泛了,比如注釋也算是代碼一部分,就是用直白的語言來解釋一些演算法的.

問題七:電腦編程是干什麼的 編程!這個可廣了.. 比如:網站.軟體.游戲.很多很多. 你指的是什麼.確實有點摸不通

問題八:大學寫程序一般需要什麼配置的電腦? 寫程序,要求不高(不是寫游戲就行)隨便搞個就行,能用四五年的,但是一定要穩定,安全可靠,要不然,費了巨多腦細胞搞出來的東西,一下全沒了,跳樓的心都有。
推薦ThinkPad,最差也得聯想,切記安全

問題九:在計算機編程中 模塊是什麼意思? 現在大型軟體項目的實施一般是分工協作開發,為了支持這一點,編程軟體提供了模塊化開發支持。通過使用易模塊,用戶可以將常用的代碼封裝起來重復使用到其它程序,或提供給第三方使用,或用作開發大型軟體項目中的某個部分,然後在軟體項目的封裝階段將所有這些模塊組織編譯成為一個完整程序。模塊就像一個已經編譯好的程序,如果你需要直接可以帶到你的程序里來使用。 希望樓主採納!!!

問題十:目前最流行的計算機編程語言是什麼? 1. PHP
基本描述:一種開源,工作在伺服器端,跨平台,使用HTML腳本的語言,因為可置入HTML頁面,因此尤其適用於網頁製作。
學習理由:使用十分廣泛。「藉助緩存高速調用腳本,並使用編譯代碼插件來增強效果是今後趨勢所在。使用C或COBOL創建Web應用程序是不可行的。
2. C#
基本描述:一種通用編輯,面向對象的編程語言,由微軟作為其計劃的一部分開發而成,包含C和C++。
學習理由:是.Net框架的基礎部分。Duquaine說:「如果您大量使用Microsoft的產品,那麼學習C#是十分有必要的。」
3. AJAX (同步 JavaScript 與 XML)
基本描述:雖然從技術上來說,這並非一種編程語言,但是AJAX使用XHTML或HTML,JavaScript以及XML來建立互動網路應用程序。
學習理由:自從Google地圖將AJAX應用到地圖上,對AJAX知識的需求不斷膨脹。Huckaby說:「對AJAX知識需求相當大,因為它很難掌握。」微軟最近聲稱將發布一個名為Atlas的工具來幫助AJAX更容易被實施。Huckaby說:「如果微軟的Atlas工具獲得成功,它將會給普通工作者帶來極大的復雜性和困擾。」
4. JavaScript
基本描述:請不要與Java混淆,JavaScript是一種面對對象的腳本變成語言,它運行在客戶端的Web瀏覽器上。它比Java更簡潔,擁有簡化的命令,易用的代碼,並且無需進行編譯。
使用理由:它可置入HTML,被用於大量的網頁來驗證表格,建立cookie,偵測瀏覽器以及提高設計。由於其易於學習與使用廣泛,已被視為重要的學習背
5. Perl
相關描述:Perl是一種開源跨平台、運行在伺服器端的解釋語言,在CGI程序中被大量用於處理文字。
學習理由:Perl在處理大量文字方面的能力使得其非常流行,且廣泛用於寫入多任務的網路伺服器程序。Duquaine說:「如果您正在從事網路應用程序的工作,那麼學習某種腳本語言(如Perl或PHP)是十分有必要的。」
6. C
基本描述:一種標准化的通用編程語言,它是最普及的語言之一,也是多種其它語言(如C++)的基礎。
學習理由:Duquaine說:「學習C是相當重要的。在學習了C後,跳躍到Java或C#就變得十分容易,因為許多語法是通用的。另外,許多C語言的語法也被用於腳本語言。」
7. Ruby and Ruby on Rails
基本描述:Ruby是一種動態的面向對象的開源語言。Rails上的Ruby則是一種使用Ruby編寫的開源網路程序框架,該框架與MVC(模型-查看-控制)結構十分類似。
學習理由:由於簡便性,有效性以及讓電腦完成任務的能力,近年來,該語言的使用量已經迅速增長。另外的好處是非常容易學習。
8. Java
基本描述:一種面向對象的變成語言,由James Gosling和其Sun Microsystems的同事在上世紀90年代早期共同開發。
學習理由:被許多開發人員所擁戴,被成為「美麗的」語言。它適用於沒有編程經驗的人員。Duquaine說:「如果您不是微軟產品的使用者,那麼學習Java必不可少。」
9. Python
基本描述:一種動態面對對象的翻譯開源語言。使用動態存儲管理。
學習理由:Python是一種高度可讀的抽象語言,許多開發人員認為其非常有趣,它的......>>

⑦ 給出一種非對稱加密演算法以及它的的C源代碼。

#include <iostream.h>
#include <math.h>
#include <stdio.h>

typedef int Elemtype;
Elemtype p,q,e;
Elemtype fn;
Elemtype m,c;
int flag = 0;
typedef void (*Msghandler) (void);
struct MsgMap {
char ch;
Msghandler handler;
};
/* 公鑰 */
struct PU {
Elemtype e;
Elemtype n;
} pu;
/* 私鑰 */
struct PR {
Elemtype d;
Elemtype n;
} pr;
/* 判定一個數是否為素數 */
bool test_prime(Elemtype m) {
if (m <= 1) {
return false;
}
else if (m == 2) {
return true;
}
else {
for(int i=2; i<=sqrt(m); i++) {
if((m % i) == 0) {
return false;
break;
}
}
return true;
}
}
/* 將十進制數據轉化為二進制數組 */
void switch_to_bit(Elemtype b, Elemtype bin[32]) {
int n = 0;
while( b > 0) {
bin[n] = b % 2;
n++;
b /= 2;
}
}
/* 候選菜單,主界面 */
void Init() {
cout<<"*********************************************"<<endl;
cout<<"*** Welcome to use RSA encoder ***"<<endl;
cout<<"*** a.about ***"<<endl;
cout<<"*** e.encrypt ***"<<endl;
cout<<"*** d.decrypt ***"<<endl;
cout<<"*** s.setkey ***"<<endl;
cout<<"*** q.quit ***"<<endl;
cout<<"**********************************by*Terry***"<<endl;
cout<<"press a key:"<<endl;
}
/* 將兩個數排序,大的在前面*/
void order(Elemtype &in1, Elemtype &in2) {
Elemtype a = ( in1 > in2 ? in1 : in2);
Elemtype b = ( in1 < in2 ? in1 : in2);
in1 = a;
in2 = b;
}
/* 求最大公約數 */
Elemtype gcd(Elemtype a, Elemtype b) {
order(a,b);
int r;
if(b == 0) {
return a;
}
else {
while(true) {
r = a % b;
a = b;
b = r;
if (b == 0) {
return a;
break;
}
}
}

}
/* 用擴展的歐幾里得演算法求乘法逆元 */
Elemtype extend_euclid(Elemtype m, Elemtype bin) {
order(m,bin);
Elemtype a[3],b[3],t[3];
a[0] = 1, a[1] = 0, a[2] = m;
b[0] = 0, b[1] = 1, b[2] = bin;
if (b[2] == 0) {
return a[2] = gcd(m, bin);
}
if (b[2] ==1) {
return b[2] = gcd(m, bin);
}
while(true) {
if (b[2] ==1) {
return b[1];
break;
}
int q = a[2] / b[2];
for(int i=0; i<3; i++) {
t[i] = a[i] - q * b[i];
a[i] = b[i];
b[i] = t[i];
}
}
}
/* 快速模冪演算法 */
Elemtype molar_multiplication(Elemtype a, Elemtype b, Elemtype n) {
Elemtype f = 1;
Elemtype bin[32];
switch_to_bit(b,bin);
for(int i=31; i>=0; i--) {
f = (f * f) % n;
if(bin[i] == 1) {
f = (f * a) % n;
}
}
return f;
}
/* 產生密鑰 */
void proce_key() {
cout<<"input two primes p and q:";
cin>>p>>q;
while (!(test_prime(p)&&test_prime(q))){
cout<<"wrong input,please make sure two number are both primes!"<<endl;
cout<<"input two primes p and q:";
cin>>p>>q;
};
pr.n = p * q;
pu.n = p * q;
fn = (p - 1) * (q - 1);
cout<<"fn = "<<fn<<endl;
cout<<"input e :";
cin>>e;
while((gcd(fn,e)!=1)) {
cout<<"e is error,try again!";
cout<<"input e :";
cin>>e;
}
pr.d = (extend_euclid(fn,e) + fn) % fn;
pu.e = e;
flag = 1;
cout<<"PR.d: "<<pr.d<<" PR.n: "<<pr.n<<endl;
cout<<"PU.e: "<<pu.e<<" PU.n: "<<pu.n<<endl;
}
/* 加密 */
void encrypt() {
if(flag == 0) {
cout<<"setkey first:"<<endl;
proce_key();
}
cout<<"input m:";
cin>>m;
c = molar_multiplication(m,pu.e,pu.n);
cout<<"c is:"<<c<<endl;
}
/* 解密 */
void decrypt() {
if(flag == 0) {
cout<<"setkey first:"<<endl;
proce_key();
}
cout<<"input c:";
cin>>c;
m = molar_multiplication(c,pr.d,pr.n);
cout<<"m is:"<<m<<endl;
}
/* 版權信息 */
void about() {
cout<<"*********************************************"<<endl;
cout<<"*** by Terry ***"<<endl;
cout<<"*** right 2010,All rights reserved by ***"<<endl;
cout<<"*** Terry,technology supported by weizuo !***"<<endl;
cout<<"*** If you have any question, please mail ***"<<endl;
cout<<"*** to [email protected] ! ***"<<endl;
cout<<"*** Computer of science and engineering ***"<<endl;
cout<<"*** XiDian University 2010-4-29 ***"<<endl;
cout<<"*********************************************"<<endl;
cout<<endl<<endl;
Init();
}
/* 消息映射 */
MsgMap Messagemap[] = {
,
,
,
,

};
/* 主函數,提供循環 */
void main() {
Init();
char d;
while((d = getchar())!='q') {
int i = 0;
while(Messagemap[i].ch) {
if(Messagemap[i].ch == d) {
Messagemap[i].handler();
break;
}
i++;
}
}
}

本程序由520huiqin編寫,詳情見參考資料

熱點內容
cf北京伺服器ip 發布:2025-08-21 16:51:13 瀏覽:725
資料庫欄位值為空的數據 發布:2025-08-21 16:45:14 瀏覽:572
php項目視頻 發布:2025-08-21 16:34:33 瀏覽:194
叉叉腳本激活碼 發布:2025-08-21 16:34:32 瀏覽:250
清理ie緩存快捷鍵 發布:2025-08-21 16:07:30 瀏覽:443
演算法規避 發布:2025-08-21 15:56:48 瀏覽:895
ip伺服器是機器嗎 發布:2025-08-21 15:40:34 瀏覽:770
wpf讀資料庫存儲的時間 發布:2025-08-21 15:30:59 瀏覽:441
存儲過程是先編譯好的嗎 發布:2025-08-21 15:25:07 瀏覽:889
java高並發編程詳解 發布:2025-08-21 15:11:27 瀏覽:550