亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

軟件設(shè)計(jì)中用戶身份的認(rèn)證方法

時(shí)間:2025-11-07 12:30:41 信息安全畢業(yè)論文

軟件設(shè)計(jì)中用戶身份的認(rèn)證方法

  軟件設(shè)計(jì)中用戶身份的認(rèn)證方法

  摘要:介紹幾種在計(jì)算機(jī)軟件系統(tǒng)設(shè)計(jì)中常用的用戶身份認(rèn)證方法,著重闡述了采集用戶硬件信息的方法,對(duì)程序設(shè)計(jì)人員設(shè)計(jì)應(yīng)用程序有一定借鑒作用。

  關(guān)鍵詞:計(jì)算機(jī)軟件;身份認(rèn)證;用戶識(shí)別;信息采集

  用戶身份的認(rèn)證和識(shí)別,是設(shè)計(jì)計(jì)算機(jī)應(yīng)用程序所必須考慮的因素,因?yàn)檐浖_(kāi)發(fā)者需要通過(guò)識(shí)別用戶來(lái)進(jìn)行軟件注冊(cè)、升級(jí)及授權(quán)等服務(wù)。

  一、幾種用戶認(rèn)證方法

  目前,獲得用戶身份的方法主要有以下幾種。

  1、由用戶自己提交個(gè)人信息進(jìn)行認(rèn)證。一些軟件通過(guò)使用者自己提交相關(guān)信息,這些信息包含用戶姓名、E-mail地址等,并以此數(shù)據(jù)作為軟件提供服務(wù)的關(guān)鍵信息。這種方法的優(yōu)點(diǎn)是簡(jiǎn)單、易實(shí)現(xiàn)。但這種方法的弱點(diǎn)也很明顯,即不能確保信息的真實(shí)性,也不能阻止使用者把獲得的信息與他人共享。

  即一個(gè)使用者獲得了注冊(cè)信息后,可以將注冊(cè)信息與親戚朋友共享,那么這些人都能使用此軟件了。糟糕的情況是使用者將注冊(cè)信息發(fā)布到網(wǎng)絡(luò)上,后果更是難以預(yù)計(jì)。

  2、由程序自動(dòng)采集用戶信息進(jìn)行認(rèn)證。為了防止軟件被非法用戶自由使用,開(kāi)發(fā)者可以使用程序來(lái)采集使用者計(jì)算機(jī)的一些相關(guān)信息。這些信息是使用者的計(jì)算機(jī)所特有的、不會(huì)輕易改變的,如硬盤(pán)序列號(hào)、CPU標(biāo)識(shí)號(hào)等,開(kāi)發(fā)者可以把這些信息與軟件綁定到使用者的機(jī)器上執(zhí)行。

  例如Windows XP的注冊(cè)就是使用了這種方法。這種方法的優(yōu)點(diǎn)是可以防止軟件隨意傳播,但如果用戶硬件更換,可能會(huì)使注冊(cè)信息失效。

  3、由特定的硬件提供信息認(rèn)證用戶。使用加密鎖、身份認(rèn)證Token、動(dòng)態(tài)口令生成器等硬件產(chǎn)品來(lái)提供信息。利用硬件的不可復(fù)制性,把硬件和軟件捆綁在一起,利用硬件里面的唯一性的識(shí)別信息來(lái)識(shí)別用戶身份。這種方法安全性好,但成本相對(duì)較高。

  二、用戶信息的采集

  在實(shí)際應(yīng)用中,使用的認(rèn)證方法往往不是單一的,而是混合實(shí)施。對(duì)于個(gè)人開(kāi)發(fā)者而言,要設(shè)計(jì)一個(gè)軟件系統(tǒng),為了既提高安全性,又降低成本,主要采用第二種方法。

  每臺(tái)計(jì)算機(jī)的CPU ID、硬盤(pán)序列號(hào)、顯卡型號(hào)、網(wǎng)卡的MAC地址等信息是不同的,把多種信息組合起來(lái)后,信息相同的概率就更低了,這些就是開(kāi)發(fā)者需要采集的信息。

  1、獲取網(wǎng)卡的MAC地址。網(wǎng)卡的MAC地址是網(wǎng)卡的唯一標(biāo)志,它是固化在網(wǎng)卡串行EEPROM中的物理地址,以太網(wǎng)交換機(jī)就是根據(jù)信息包頭中的MAC源地址和目的地址實(shí)現(xiàn)包的交換和傳遞的。理論上講,不存在2塊網(wǎng)卡的MAC完全相同,這點(diǎn)非常適合用于用戶的身份認(rèn)證。

  在Windows操作系統(tǒng)下,在DOS窗口中運(yùn)行ipconfig/all命令,就可以查看本機(jī)的網(wǎng)卡MAC地址,如顯示為:Physical Address:00――14――2A――6F――47――1A。

  在Windows XP系統(tǒng)下,可以使用系統(tǒng)提供的NetApi32.DLL功能,實(shí)現(xiàn)網(wǎng)卡信息的采集。方法為:(1)使用NCBENUM命令獲得網(wǎng)卡的數(shù)目和每塊網(wǎng)卡的內(nèi)部編號(hào);(2)使用NCBASTAT命令獲取每塊網(wǎng)卡的MAC地址。下面是部分程序源碼,詳細(xì)信息參見(jiàn)相關(guān)資料。

  typedef struct _ASTAT_

  {

  ADAPTER_STATUS adapt;

  NAME_BUFFER NameBuff[30];

  }ASTAT,*PASTAT;

  ASTAT Adapter;

  void main()

  {

  NCB ncb;

  UCHAR uRetCode;

  LANA_ENUM lenum;

  /pic/p>

  memset(&ncb,0,sizeof(ncb));

  ncb.ncb_command=NCBENUM;

  ncb.ncb_buffer=(unsigned char*)&lenum;

  ncb.ncb_length=sizeof(lenum);

  uRetCode=Netbios(&ncb);

  if(uRetCode!=0)return;

  /pic/p>

  /pic/p>

  For(int i=0;i  {

  /pic/p>

  Memset(&ncb,0,sizeof(ncb));

  ncb.ncb_command=NCBRESET;

  ncb.ncb_lana_num=lenum.lana[i];/pic/p>

  uRetCode=Netbios(&ncb);

  /pic/p>

  Memset(&ncb,0,sizeof(ncb));

  ncb.ncb_command=NCBASTAT;

  ncb.ncb_lana_num=lenum.lana[i];/pic/p>

  strcpy((char *)ncb.ncb_callname,“*”);

  ncb.ncb_buffer=(unsigned char *)&Adapter;/pic/p>

  ncb.ncb_length=sizeof(Adapter);

  uRetCode = Netbios(&ncb);

  }

  }

  此時(shí),按F7編譯直至通過(guò),按F5運(yùn)行即可。這段代碼可以直接嵌入相關(guān)的應(yīng)用系統(tǒng)之中,或封裝成.DLL或COM控件,以便可以在Visual Basic、Visual Foxpro、Power Builder或Delphi等其他程序中調(diào)用。

  2、獲取CPU信息。以前的CPU型號(hào)有很多是相同的,但在Pentium III后,Intel公司為了安全交易和資產(chǎn)追蹤,為每個(gè)處理器增加了一個(gè)唯一的序列號(hào),這是我們希望獲取的信息。在CPU指令集中,指令cupid被設(shè)計(jì)用來(lái)獲取CPU有關(guān)的信息,關(guān)于這一指令的說(shuō)明,可以參見(jiàn)相關(guān)資料,這里不再詳細(xì)介紹。下面是用C語(yǔ)言編寫(xiě)的一段功能實(shí)現(xiàn)源碼,用于識(shí)別CPU信息,并顯示出來(lái)。

  {

  PROCESSOR_SIGNATURE ps;

  FEATURE_FLAGS ff;

  MISC_INFO mi;

  _asm

  {

  mov eax,1

  cupid

  mov ps,eax

  mov mi,ebx

  mov ff,edx

  }

  printf(“Processor Type:%d\n”,ps.ProcessorType);

  printf(“Model Number:%d\n”,ps.ModelNumber);

  printf(“Family Code:%d\n”,ps.FamilyCode);

  printf(“Extended Model:%d\n”,ps.ExtendedModel);

  printf(“Extended Family:%d\n”,ps.ExtendedFamily);

  printf(“Stepping ID:%d\n”,ps.SteppingID);

  printf(“Brand ID:%d\n”,mi.BrandID);

  if(ff.MMX) printf(“Support MMX\n”);

  if(ff.SSE)printf(“Support SSE\n”);

  if(ff.SSE2)printf(“Support SSE2\n”);

  if(ff.PSN)printf(“Support processor serial number\n”);

  }

  以上功能可以獲取CPU的緩存信息,顯示緩存的聯(lián)合多路工作狀態(tài)、緩存入口和標(biāo)準(zhǔn)標(biāo)簽的數(shù)目等,都可以作為識(shí)別CPU的標(biāo)志,而CPU的序列號(hào)(processor serial number)是每個(gè)CPU的不變標(biāo)識(shí)。

  3、獲取硬盤(pán)序列號(hào)。大多數(shù)計(jì)算機(jī)中都配有硬盤(pán),但由于其有損壞而被更換的可能性,所以其信息的可靠性要低于CPU信息。在網(wǎng)上能夠找到很多獲得硬盤(pán)序列號(hào)的程序,但大多數(shù)不是我們所需要的。

  如果在DOS窗口下輸入Dir/p命令,我們就能看到”Volume Serial Number is xxxx-xxxx”這樣的信息,很多程序取得的就是這個(gè)信息,而這是格式化程序產(chǎn)生并保存在硬盤(pán)上的一個(gè)信息,即”邏輯硬盤(pán)序列號(hào)”,不是我們所要的,我們要獲得硬盤(pán)廠商提供的信息,由于程序比較復(fù)雜,限于篇幅,就不再詳細(xì)介紹了,有興趣的朋友可以進(jìn)一步研究。

【軟件設(shè)計(jì)中用戶身份的認(rèn)證方法】相關(guān)文章:

用戶報(bào)告模板09-17

軟件用戶體驗(yàn)報(bào)告10-20

用戶感謝信10-09

軟件設(shè)計(jì)咨詢合同04-08

商務(wù)禮儀中握手的方法12-05

商務(wù)禮儀中握手的方法05-04

[精品]軟件設(shè)計(jì)大賽策劃書(shū)12-22

臨床醫(yī)學(xué)教學(xué)中的方法及體會(huì)08-28

公司給用戶的道歉信模板11-02

用戶服務(wù)合同12-17