Linux crypt函式的使用

2021-10-24 07:53:25 字數 891 閱讀 6124

crypt函式用來加密,目前linux平台上加密的方法大致有md5, des, 3 des

在redhat平台上md5和des用的多一些。crypt函式的原形是:

char *crypt(const char *key, const char *salt);

key就是我們要傳入的明文,salt是我們指定用來加密的金鑰,返回值就是加密後的密文。

關鍵就是這個金鑰salt,這裡通過我們的實驗,發現:

(1)salt這個字串如果以$1$開頭,以$結尾,那麼這表示讓crypt用md5的方式加密,加密後出來的密文格式就是 $1$...$《密文正文》 ,夾在$1$和$之間的字串就是我們指定的金鑰文字。這個金鑰文字最多不能超過8個字元。

在easycluster的一些安裝配置指令碼中,我們就是用了這種加密方式,取出本機的mac位址,然後用我們定義好的乙個金鑰加密,加密完成後 將密文中$1$...$這部分去掉,只保留後面的密文在license檔案中,這樣別人就不知道我們用什麼金鑰進行了加密,就算知道我們是針對mac位址 加密的,但是由於不知道金鑰是什麼,所以還是安全的。(當然,破解者可以看我們驗證license的彙編**,一樣能看到,hoho)

(2)如果salt字串不是(1)方式的格式,那預設就用des加密方法。des加密時,salt只能取兩個字元,也就是說,salt最多不能 超過2個字元,多出的字元會被丟棄。(suse上的3 des不清楚是怎麼乙個約定),用des加密出來的密文前兩個字元就是金鑰。後面緊跟著的就是真正的密文。

在使用crypt函式的時候,在**的開頭,要定義這個常量:

#define _xopen_source

具體可以看man 3 crypt,這個常量的含義,在apue第二章講的很清楚。如果不定義這個常量,在有些linux上沒問題,但是在有些linux上,就會出現crypt返回空指標的錯誤

linux crypt 函式使用總結

原型 char crypt const char key,const char salt 標準說明 crypt 演算法會接受乙個最長可達8字元的金鑰 即key 並施以資料加密演算法 des 的一種變體。salt引數指向乙個兩個字元的字串,用來改變des演算法。該函式返回乙個指標,指向長度13個字元的...

函式的使用

函式的定義 我們有乙個很簡單的函式echoname function echoname 他的結構如下 array type function name echoname property array child array array type echo value array type strin...

函式的使用

1.函式在呼叫時,只看函式名稱,不看引數名稱,至於調完後能不能正常執行,就看你怎麼寫了 function fun1 a,b fun1 1,2 返回值是3 fun1 1,2,3,4 返回值是3 fun1 相當於你定義了乙個變數,沒有給它初始化值,他的預設值是undefined。然後兩個undefine...