自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Unix函數(shù)庫(kù)中CrackLib原理及應(yīng)用

系統(tǒng) 其他OS
我們?cè)谖恼轮?,?huì)講解下Unix函數(shù)庫(kù)中CrackLib原理及應(yīng)用。CrackLib 字典可直接從網(wǎng)上下載,也可以用它提供的工具生成。

在Unix系統(tǒng)中,我們要學(xué)習(xí)的東西有很多。今天,我們就來(lái)學(xué)習(xí)下Unix函數(shù)庫(kù)中CrackLib原理及應(yīng)用。CrackLib是一個(gè)用于Unix函數(shù)庫(kù), 它可以用于編寫和口令有關(guān)的程序。其基本思想就是通過(guò)限制用戶使用使用過(guò)于簡(jiǎn)單、容易被猜測(cè)出來(lái)或容易被一些工具搜索到的密碼,來(lái)提高系統(tǒng)的安全性。

CrackLib并不是一個(gè)可以直接運(yùn)行使用的程序, 它只是一個(gè)Unix函數(shù)庫(kù), 可以利用其中的函數(shù)寫自己的程序或是加入其它程序中以提高安全性,如可以改寫passwd 使用戶在選擇密碼時(shí)受到限制。

CrackLib使用一個(gè)字典, 它查找字典以判斷用戶所選密碼是不是安全的密碼。用戶也可以加入其它信息, 使用自己的字典。CrackLib通過(guò)建立索引和二元查找,效率非常高,其字典大小通常只有同等字典數(shù)的一半。下面介紹如何運(yùn)用CrackLib。

1、Unix函數(shù)庫(kù)構(gòu)建cracklib字典

CrackLib可以很容易的在Internet上找到, 現(xiàn)在使用的版本多是2.7, 首先要確定字典安裝的路徑,即給DICTPATH賦值,形式為:目錄+字典文件名(不包括后綴),如:DICTPATH=/usr/local/lib/pw_dict.。該變量值將在所有調(diào)用CrackLib函數(shù)的程序中用到,字典文件通常包括 /usr/local/lib/pw_dict.pwd,/usr/local/lib/pw_dict.pwi,/usr/local/lib/pw_dict.hwm三個(gè)文件。

CrackLib 字典可直接從網(wǎng)上下載,也可以用它提供的工具生成。如果想加入其它信息, 使用自己的字典,可將含有新詞的文件放到SOURCEDICT目錄如"/usr/dict/words"下,CrackLib會(huì)將所有文件合并起來(lái),刪除多余的詞,將其壓縮成字典文件,通常只有原文件40%-60%的大小。

2、Unix函數(shù)庫(kù)在程序中調(diào)用函數(shù)

CrackLib函數(shù)可以被應(yīng)用于很多地方, 只需加入簡(jiǎn)單的幾行源碼, 就可以得到非常好的效果。 char *FascistCheck(char *pw, char *dictpath) 是CrackLib中最常用的函數(shù)。其中 pw是用戶選擇的密碼, 將被驗(yàn)證是不是安全的,dictpath是字典所在路徑。

FascistCheck() 返回一個(gè)空指針,說(shuō)明口令很安全,否則返回診斷出的字符串。下面是一個(gè)口令設(shè)置的簡(jiǎn)單示例, 用以說(shuō)明CrackLib函數(shù)用法. 
 

  1. #ifndef CRACKLIB_DICTPATH     
  2. #define CRACKLIB_DICTPATH "/usr/local/lib/pw_dict"    
  3. #endif     
  4. ...    
  5. ...    
  6. ...     
  7. char *msg;     
  8. while(1) {    
  9. passbuf = getpass("請(qǐng)?jiān)O(shè)定新密碼:");    
  10. if (!*passbuf) {    
  11. (void)printf("密碼設(shè)定取消, 繼續(xù)使用舊密碼\n");    
  12. break;    
  13. }      
  14. if (strlen(pussbuf) <= 4 ││ !strcmp( passbuf, newuser.userid ) ) {    
  15. (void)printf("密碼太短或與使用者代號(hào)相同, 請(qǐng)重新輸入\n ");    
  16. continue;    
  17. }    
  18. if (msg = (char*) FascistCheck(passbuf, CRACKLIBPATH)) {    
  19. printf("請(qǐng)另選密碼! (%s)\n",msg);    
  20. continue;    
  21. }    
  22. strncpy( newuser.passwd, passbuf, PASSLEN );    
  23. passbuf = getpass("請(qǐng)?jiān)佥斎胍淮文愕拿艽a );    
  24. if( strncmp( passbuf, newuser.passwd, PASSLEN ) != 0 ) {    
  25. prints("密碼輸入錯(cuò)誤, 請(qǐng)重新輸入密碼.\n") ;    
  26. continue;    
  27. }    
  28. passbuf[8] = '\0' ;    
  29. break;    

這樣通過(guò)限制用戶使用不安全的密碼, 可以極大地提高系統(tǒng)的安全性。Unix函數(shù)庫(kù)中的CrackLib原理及應(yīng)用我們就講解到這里了。

【編輯推薦】

  1. 8.1.3 UNIX口令散列
  2. Unix文件系統(tǒng)高級(jí)管理
  3. Unix文件系統(tǒng)備份概述
  4. Unix系統(tǒng)如何防止感染DOS系統(tǒng)病毒
  5. 鑒別Unix系統(tǒng)是否被入侵技巧
責(zé)任編輯:小霞
相關(guān)推薦

2009-09-17 13:15:12

NIS函數(shù)庫(kù)

2011-08-23 15:02:59

LuaTable

2011-08-23 14:26:07

Lua字符串

2011-08-23 16:14:27

Lua函數(shù)庫(kù)函數(shù)

2009-12-08 19:34:26

PHP拼寫檢查函數(shù)庫(kù)

2020-11-16 12:40:55

Java開(kāi)發(fā)機(jī)器學(xué)習(xí)

2009-09-16 10:43:22

PHP正則表達(dá)式函數(shù)

2010-06-13 10:18:08

MySQL 數(shù)據(jù)庫(kù)函數(shù)

2014-01-07 14:53:37

Android開(kāi)發(fā)依賴注入Roboguice

2024-05-09 08:25:38

AndroidServiceLooper

2009-11-16 15:07:23

PHP數(shù)組函數(shù)庫(kù)

2021-07-10 07:41:20

Python中文函數(shù)庫(kù)Python基礎(chǔ)

2016-02-17 16:04:42

2020-02-12 16:58:15

JavaScript前端技術(shù)

2013-06-27 14:14:06

安卓開(kāi)發(fā)經(jīng)驗(yàn)安卓資源安卓UI

2010-10-09 16:40:52

2017-03-16 14:37:05

LinuxShell函數(shù)

2023-05-26 08:02:11

工具函數(shù)庫(kù)模塊

2024-02-05 22:53:59

前端開(kāi)發(fā)

2024-02-27 09:28:15

前端開(kāi)發(fā)函數(shù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)