Libnids的雜湊函式

2021-07-01 19:58:38 字數 2208 閱讀 5776

關於hash函式基本知識,參考文章hash函式的基本知識

#include #include #include #include #include #include static u_char xor[12];

static u_char perm[12];

static void getrnd ()

//如果從"/dev/urandom"中讀取到了隨機數函式就返回了,那麼以下不會執行

gettimeofday (&s, 0);

srand (s.tv_usec);

ptr = (u_int *) xor;

*ptr = rand ();

*(ptr + 1) = rand ();

*(ptr + 2) = rand ();

ptr = (u_int *) perm;

*ptr = rand ();

*(ptr + 1) = rand ();

*(ptr + 2) = rand ();

}//將perm陣列的各個元素分別轉化為0-11之間的整數,之後會在mkhash函式中使用到

//xor陣列的各個元素都是char型,元素值是0和255之間的隨機數

void init_hash ()

}u_int mkhash (u_int src, u_short sport, u_int dest, u_short dport)

參考文章

/dev/random和/dev/urandom的一點備忘 

在getrnd函式中從檔案「/dev/urandom"讀取隨機數流。

核心實現了乙個功能強大的隨機數產生器,從理論上講它能產生真隨機數,隨機數產生器從裝置驅動收集環境噪音放入熵池,核心或使用者空間程序都可以訪問熵池,熵池中的資料不但是隨機的,而且對於外部攻擊者來說是非確定的,這些隨機數可以用與各種程式中,尤其是加密程式

我們知道在c庫中也有隨機數產生函式,但是它產生的是偽隨機數,因為它是由可確定的函式產生的,雖然產生的這些數看似是隨機的,但是它們並非統計意義上的隨機數。而核心中的隨機數產生函式確是非確定性的。我們在使用計算機時,我們對鍵盤的操作是隨機的,包括輸入的字元,或者是連續兩次敲擊鍵盤的間隔時間,滑鼠的位置也是隨機的,滑鼠的移動速度是隨機的。或者是磁碟io的請求響應時間。隨機數產生函式把這些噪音放入到熵池中,訪問熵池時,核心會計算熵池的sha雜湊值,sha是一種資訊摘要演算法,它由乙個可變長的輸入,轉換為乙個固定長度的雜湊值,輸出不唯一,且不可逆向轉化。

/dev/random和/dev/urandom是linux系統中提供的隨機偽裝置,這兩個裝置的任務是提供永不為空的隨機位元組資料流。很多解密程式與安全應用程式(如ssh keys,ssl keys等)需要它們提供的隨機資料流。

這兩個裝置的差異在於:/dev/random的random pool依賴於系統中斷,因此在系統的中斷數不足時,/dev/random裝置會一直封鎖,嘗試讀取的程序就會進入等待狀態,直到系統的中斷數充分夠用,/dev/random裝置可以保證資料的隨機性/dev/urandom不依賴系統的中斷,也就不會造成程序忙等待,但是資料的隨機性也不高

由於檔案產生的是二進位制的隨機數流,無法直接通過cat命令檢視,通過od -x命令將其轉換為十六進製制內容,分別檢視這兩個檔案,可以看到random生成資料很慢、urandom生成隨機數很快。

生成k個小於n的互不相同的隨機數中有另外一種產生的方法。

在該函式執行後輸出perm陣列和xor陣列的元素值:

int main() 

如下是幾次輸出的結果:從圖中可以看出,每次perm輸出的都是0-11之間的數字,但每次輸出的順序都不相同;xor陣列輸出的是0-255之間的隨機數。

libnids執行機制 函式呼叫流程

libnids函式呼叫流程 1 系統呼叫 int nids init 初始化程式 2 int nids init 呼叫函式 init procs 以下是該函式的實現 1 static void init procs 2程第四行指定了ip frag procs的處理函式 這是僅僅是指定,沒有實際的處理...

linux下libnids的安裝

1 安裝libpcap 略 2 安裝libnet 解壓 tar zxvf libnet 1.1.6.tar.gz cd libnet 1.1.6 configure make make install 安裝完以後,修改一下動態庫配置檔案,在 etc ld.so.conf.d 目錄下,新建檔案 lib...

雜湊函式(雜湊函式,Hash Function)

說明 雜湊的概念屬於查詢,它不以關鍵字的比較為基本操作,採用直接定址技術。在理想情況下,查詢的期望時間為o 1 簡單的說,hash函式就是把任意長的輸入字串變化成固定長的輸出字串的一種函式。輸出字串的長度稱為hash函式的位數。下圖 於維基百科 雜湊函式把訊息或資料壓縮成摘要,使得資料量變小,將資料...