浓毛老太交欧美老妇热爱乱,蜜臀性色av免费,妺妺窝人体色www看美女,久久久久久久久久久大尺度免费视频,麻豆人妻无码性色av专区

位置:51電子網(wǎng) » 技術(shù)資料 » EDA/PLD

Visual C++中調(diào)用DLL實(shí)現(xiàn)數(shù)據(jù)加密

發(fā)布時(shí)間:2008/8/23 0:00:00 訪問(wèn)次數(shù):863

  摘 要:介紹了動(dòng)態(tài)鏈接庫(kù)這種模塊復(fù)用方法及在vc中對(duì)它的調(diào)用,并給出了一個(gè)通過(guò)復(fù)用來(lái)實(shí)現(xiàn)數(shù)據(jù)加密的具體實(shí)例。

引言

  模塊化思想貫穿于軟件工程各個(gè)發(fā)展階段,模塊復(fù)用是構(gòu)建大系統(tǒng)的一種重要思想。模塊復(fù)用方法有:函數(shù)、函數(shù)庫(kù)、動(dòng)態(tài)鏈接庫(kù)、com。其都是基于模塊化的基本思想。函數(shù)是最簡(jiǎn)單的模塊化思想,也是后面方法的基礎(chǔ),甚至是一個(gè)應(yīng)用程序的基礎(chǔ)。函數(shù)庫(kù)是函數(shù)的組合,一般將一些功能相似的函數(shù)放在一起作為函數(shù)庫(kù),這種函數(shù)庫(kù)通常叫做靜態(tài)庫(kù),其鏈接方式是靜態(tài)的。com即組件對(duì)象模型,是一種集成技術(shù),可以使程序在運(yùn)行時(shí)把各種不相關(guān)的軟件程序混合在一起,而不必考慮這些不相關(guān)的程序是用什么語(yǔ)言編寫(xiě)的,它也是一種標(biāo)準(zhǔn)或者稱為協(xié)議,負(fù)責(zé)將一個(gè)軟件模塊和另一個(gè)軟件連接起來(lái)。動(dòng)態(tài)鏈接庫(kù)dll(dynamic link library)是一個(gè)可以被其它應(yīng)用程序共享的程序模塊,其中封裝了一些可以被共享的例程和資源,其鏈接方式是動(dòng)態(tài)的。動(dòng)態(tài)鏈接庫(kù)文件的擴(kuò)展名一般是dll,也有可能是fon、sys和dry,它和可執(zhí)行文件(.exe)非常相似,區(qū)別在于dll中雖然包含了可執(zhí)行代碼卻不能單獨(dú)執(zhí)行,而應(yīng)由windows應(yīng)用程序直接或間接調(diào)用。windows操作系統(tǒng)包含大量動(dòng)態(tài)鏈接庫(kù),其中最主要的是kernel32.dll、user32.dll、gdi32.dll 。

dll的調(diào)用

  調(diào)用dll,首先需要將dll文件映像到用戶進(jìn)程的地址空間中,然后才能進(jìn)行函數(shù)調(diào)用,這個(gè)函數(shù)和進(jìn)程內(nèi)部一般函數(shù)的調(diào)用方法相同。windows提供了兩種將dll映像到進(jìn)程地址空間的方法:

1、隱式的加載時(shí)鏈接

  這種方法需要dll工程經(jīng)編譯產(chǎn)生的lib文件,此文件中包含了dll允許應(yīng)用程序調(diào)用的所有函數(shù)的列表,當(dāng)鏈接器發(fā)現(xiàn)應(yīng)用程序調(diào)用了lib文件列出的某個(gè)函數(shù),就會(huì)在應(yīng)用程序的可執(zhí)行文件的文件映像中加入一些信息,這些信息指出了包含這個(gè)函數(shù)的dll文件的名字。當(dāng)這個(gè)應(yīng)用程序運(yùn)行時(shí),也就是它的可執(zhí)行文件被操作系統(tǒng)產(chǎn)生映像文件時(shí),系統(tǒng)會(huì)查看這個(gè)映像文件中關(guān)于dll的信息,然后將這個(gè)dll文件映像到進(jìn)程的地址空間。

  系統(tǒng)通過(guò)dll文件的名稱,試圖加載這個(gè)文件到進(jìn)程地址空間時(shí),它尋找dll 文件的路徑按照先后順序如下:

  ·程序運(yùn)行時(shí)的目錄,即可執(zhí)行文件所在的目錄;

  ·當(dāng)前程序工作目錄

  ·系統(tǒng)目錄:對(duì)于windows95/98來(lái)說(shuō),可以調(diào)用getsystemdirectory函數(shù)來(lái)得到,對(duì)于windowsnt/2000來(lái)說(shuō),指的是32位windows的系統(tǒng)目錄,也可以調(diào)用getsystemdirectory函數(shù)來(lái)得到,得到的值為system32。

  ·windows目錄

  ·列在path環(huán)境變量中的所有目錄

  vc中加載dll的lib文件的方法有以下三種:

 、賚ib文件直接加入到工程文件列表中

  在vc中打開(kāi)file view一頁(yè),選中工程名,單擊鼠標(biāo)右鍵,然后選中"add files to project"菜單,在彈出的文件對(duì)話框中選中要加入dll的lib文件即可。

  ②設(shè)置工程的 project settings來(lái)加載dll的lib文件

  打開(kāi)工程的 project settings菜單,選中l(wèi)ink,然后在object/library modules下的文本框中輸入dll的lib文件。

  ③通過(guò)程序代碼的方式

  加入預(yù)編譯指令#pragma comment (lib,"*.lib"),這種方法優(yōu)點(diǎn)是可以利用條件預(yù)編譯指令鏈接不同版本的lib文件。因?yàn),在debug方式下,產(chǎn)生的lib文件是debug版本,如regd.lib;在release方式下,產(chǎn)生的lib文件是release版本,如regr.lib。

  當(dāng)應(yīng)用程序?qū)ll的lib文件加載后,還需要把dll對(duì)應(yīng)的頭文件(*.h)包含到其中,在這個(gè)頭文件中給出了dll中定義的函數(shù)原型,然后聲明。

2、顯式的運(yùn)行時(shí)鏈接

  隱式鏈接雖然實(shí)現(xiàn)較簡(jiǎn)單,但除了必須的*.dll文件外還需要dll的*.h文件和*.lib文件,在那些只提供*.dll文件的場(chǎng)合就無(wú)法使用,而只能采用顯式鏈接的方式。這種方式通過(guò)調(diào)用api函數(shù)來(lái)完成對(duì)dll的加載與卸載,其能更加有效地使用內(nèi)存,在編寫(xiě)大型應(yīng)用程序時(shí)往往采用此方式。這種方法編程具體實(shí)現(xiàn)步驟如下:

 、偈褂脀indows api函數(shù)load library或者mfc提供的afxloadlibrary將dll模塊映像到進(jìn)程的內(nèi)存空間,對(duì)dll模塊進(jìn)行動(dòng)態(tài)加載。

  ②使用getprocaddress函數(shù)得到要調(diào)用dll中的函數(shù)的指針。

  ③不用dll時(shí),用free library函數(shù)或者afxfreelibrary函數(shù)從進(jìn)程的地址空間顯式卸載dll。

  vc中調(diào)用實(shí)例

  數(shù)據(jù)加密是計(jì)算機(jī)安全領(lǐng)域的重要內(nèi)容,其基本思想是通過(guò)變換信息的表現(xiàn)形式來(lái)保護(hù)敏感信息,使非授權(quán)者不能了解被保護(hù)信息的內(nèi)容。常見(jiàn)的數(shù)據(jù)加密算法有:des,idea,rsa,ecc,aes,md5,sha等。

  《共享軟件加密算法庫(kù)》是一款針對(duì)個(gè)人、企業(yè)開(kāi)發(fā)共享軟件的加密工具,支持windows平臺(tái)下各類(lèi)開(kāi)發(fā)工具:vc、vb、delphi、pb、vfp等,算法庫(kù)集成的算法有:blowfish、md5、secret16、aes、sha、crc32、rsa、des、字符串加/解密、

  摘 要:介紹了動(dòng)態(tài)鏈接庫(kù)這種模塊復(fù)用方法及在vc中對(duì)它的調(diào)用,并給出了一個(gè)通過(guò)復(fù)用來(lái)實(shí)現(xiàn)數(shù)據(jù)加密的具體實(shí)例。

引言

  模塊化思想貫穿于軟件工程各個(gè)發(fā)展階段,模塊復(fù)用是構(gòu)建大系統(tǒng)的一種重要思想。模塊復(fù)用方法有:函數(shù)、函數(shù)庫(kù)、動(dòng)態(tài)鏈接庫(kù)、com。其都是基于模塊化的基本思想。函數(shù)是最簡(jiǎn)單的模塊化思想,也是后面方法的基礎(chǔ),甚至是一個(gè)應(yīng)用程序的基礎(chǔ)。函數(shù)庫(kù)是函數(shù)的組合,一般將一些功能相似的函數(shù)放在一起作為函數(shù)庫(kù),這種函數(shù)庫(kù)通常叫做靜態(tài)庫(kù),其鏈接方式是靜態(tài)的。com即組件對(duì)象模型,是一種集成技術(shù),可以使程序在運(yùn)行時(shí)把各種不相關(guān)的軟件程序混合在一起,而不必考慮這些不相關(guān)的程序是用什么語(yǔ)言編寫(xiě)的,它也是一種標(biāo)準(zhǔn)或者稱為協(xié)議,負(fù)責(zé)將一個(gè)軟件模塊和另一個(gè)軟件連接起來(lái)。動(dòng)態(tài)鏈接庫(kù)dll(dynamic link library)是一個(gè)可以被其它應(yīng)用程序共享的程序模塊,其中封裝了一些可以被共享的例程和資源,其鏈接方式是動(dòng)態(tài)的。動(dòng)態(tài)鏈接庫(kù)文件的擴(kuò)展名一般是dll,也有可能是fon、sys和dry,它和可執(zhí)行文件(.exe)非常相似,區(qū)別在于dll中雖然包含了可執(zhí)行代碼卻不能單獨(dú)執(zhí)行,而應(yīng)由windows應(yīng)用程序直接或間接調(diào)用。windows操作系統(tǒng)包含大量動(dòng)態(tài)鏈接庫(kù),其中最主要的是kernel32.dll、user32.dll、gdi32.dll 。

dll的調(diào)用

  調(diào)用dll,首先需要將dll文件映像到用戶進(jìn)程的地址空間中,然后才能進(jìn)行函數(shù)調(diào)用,這個(gè)函數(shù)和進(jìn)程內(nèi)部一般函數(shù)的調(diào)用方法相同。windows提供了兩種將dll映像到進(jìn)程地址空間的方法:

1、隱式的加載時(shí)鏈接

  這種方法需要dll工程經(jīng)編譯產(chǎn)生的lib文件,此文件中包含了dll允許應(yīng)用程序調(diào)用的所有函數(shù)的列表,當(dāng)鏈接器發(fā)現(xiàn)應(yīng)用程序調(diào)用了lib文件列出的某個(gè)函數(shù),就會(huì)在應(yīng)用程序的可執(zhí)行文件的文件映像中加入一些信息,這些信息指出了包含這個(gè)函數(shù)的dll文件的名字。當(dāng)這個(gè)應(yīng)用程序運(yùn)行時(shí),也就是它的可執(zhí)行文件被操作系統(tǒng)產(chǎn)生映像文件時(shí),系統(tǒng)會(huì)查看這個(gè)映像文件中關(guān)于dll的信息,然后將這個(gè)dll文件映像到進(jìn)程的地址空間。

  系統(tǒng)通過(guò)dll文件的名稱,試圖加載這個(gè)文件到進(jìn)程地址空間時(shí),它尋找dll 文件的路徑按照先后順序如下:

  ·程序運(yùn)行時(shí)的目錄,即可執(zhí)行文件所在的目錄;

  ·當(dāng)前程序工作目錄

  ·系統(tǒng)目錄:對(duì)于windows95/98來(lái)說(shuō),可以調(diào)用getsystemdirectory函數(shù)來(lái)得到,對(duì)于windowsnt/2000來(lái)說(shuō),指的是32位windows的系統(tǒng)目錄,也可以調(diào)用getsystemdirectory函數(shù)來(lái)得到,得到的值為system32。

  ·windows目錄

  ·列在path環(huán)境變量中的所有目錄

  vc中加載dll的lib文件的方法有以下三種:

 、賚ib文件直接加入到工程文件列表中

  在vc中打開(kāi)file view一頁(yè),選中工程名,單擊鼠標(biāo)右鍵,然后選中"add files to project"菜單,在彈出的文件對(duì)話框中選中要加入dll的lib文件即可。

  ②設(shè)置工程的 project settings來(lái)加載dll的lib文件

  打開(kāi)工程的 project settings菜單,選中l(wèi)ink,然后在object/library modules下的文本框中輸入dll的lib文件。

  ③通過(guò)程序代碼的方式

  加入預(yù)編譯指令#pragma comment (lib,"*.lib"),這種方法優(yōu)點(diǎn)是可以利用條件預(yù)編譯指令鏈接不同版本的lib文件。因?yàn)椋赿ebug方式下,產(chǎn)生的lib文件是debug版本,如regd.lib;在release方式下,產(chǎn)生的lib文件是release版本,如regr.lib。

  當(dāng)應(yīng)用程序?qū)ll的lib文件加載后,還需要把dll對(duì)應(yīng)的頭文件(*.h)包含到其中,在這個(gè)頭文件中給出了dll中定義的函數(shù)原型,然后聲明。

2、顯式的運(yùn)行時(shí)鏈接

  隱式鏈接雖然實(shí)現(xiàn)較簡(jiǎn)單,但除了必須的*.dll文件外還需要dll的*.h文件和*.lib文件,在那些只提供*.dll文件的場(chǎng)合就無(wú)法使用,而只能采用顯式鏈接的方式。這種方式通過(guò)調(diào)用api函數(shù)來(lái)完成對(duì)dll的加載與卸載,其能更加有效地使用內(nèi)存,在編寫(xiě)大型應(yīng)用程序時(shí)往往采用此方式。這種方法編程具體實(shí)現(xiàn)步驟如下:

  ①使用windows api函數(shù)load library或者mfc提供的afxloadlibrary將dll模塊映像到進(jìn)程的內(nèi)存空間,對(duì)dll模塊進(jìn)行動(dòng)態(tài)加載。

 、谑褂胓etprocaddress函數(shù)得到要調(diào)用dll中的函數(shù)的指針。

  ③不用dll時(shí),用free library函數(shù)或者afxfreelibrary函數(shù)從進(jìn)程的地址空間顯式卸載dll。

  vc中調(diào)用實(shí)例

  數(shù)據(jù)加密是計(jì)算機(jī)安全領(lǐng)域的重要內(nèi)容,其基本思想是通過(guò)變換信息的表現(xiàn)形式來(lái)保護(hù)敏感信息,使非授權(quán)者不能了解被保護(hù)信息的內(nèi)容。常見(jiàn)的數(shù)據(jù)加密算法有:des,idea,rsa,ecc,aes,md5,sha等。

  《共享軟件加密算法庫(kù)》是一款針對(duì)個(gè)人、企業(yè)開(kāi)發(fā)共享軟件的加密工具,支持windows平臺(tái)下各類(lèi)開(kāi)發(fā)工具:vc、vb、delphi、pb、vfp等,算法庫(kù)集成的算法有:blowfish、md5、secret16、aes、sha、crc32、rsa、des、字符串加/解密、
相關(guān)IC型號(hào)

熱門(mén)點(diǎn)擊

 

推薦技術(shù)資料

聲道前級(jí)設(shè)計(jì)特點(diǎn)
    與通常的Hi-Fi前級(jí)不同,EP9307-CRZ這臺(tái)分... [詳細(xì)]
版權(quán)所有:51dzw.COM
深圳服務(wù)熱線:13751165337  13692101218
粵ICP備09112631號(hào)-6(miitbeian.gov.cn)
公網(wǎng)安備44030402000607
深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式


 復(fù)制成功!