Crypt加密函數簡介(C語言)


 

定義函數

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

函數說明

crypt是個密碼加密函數,它是基於Data Encryption Standard(DES)演算法。crypt只適用於密碼的使用,不適合用於資料加密。

crypt()將參數key所指的字符串加以加密,key字符串長度僅取前8個字符,超過此長度的字符沒有意義。參數salt為兩個字符組成的字符串,由a-z、A-Z、0-9,“.”和“/”所組成,用來決定使用4096 (a-z、A-Z、0-9,“.”和“/”共64個字符,64的平方為4096)種不同內建表格的哪一個。函數執行成功后會返回指向編碼過的字符串指針,參數key 所指的字符串不會有所更動。編碼過的字符串長度為13 個字符,前兩個字符為參數salt代表的字符串。

返回值

返回一個指向以NULL結尾的密碼字符串。

注意編譯時要在末尾添加-lcrypt選項。

/**

 * gcc -o crypt crypt.c -lcrypt

 */

 

#include <unistd.h>

#include <crypt.h>

#include <string.h>

int main(void)

{

    char passwd[13];

    char *key;

    char slat[2];

    key = getpass("Input First Password:");

    slat[0] = key[0];

    slat[1] = key[1];

    strcpy(passwd,crypt(key,slat));

    key = getpass("Input Second Password:");

    slat[0] = passwd[0];

    slat[1] = passwd[1];

    printf("After crypt(),1st passwd :%s/n", passwd);

    printf("After crypt(),2nd passwd:%s /n", crypt(key,slat));

    return 0;

}

 

程序運行結果:(注:兩次輸入一樣)

Input First Password:

Input Second Password:

After crypt(),1st passwd :asZvhAtTX.i7g

After crypt(),2nd passwd:asZvhAtTX.i7g

 

 

 

 

相關函數:crypt
表頭文件:#include <unistd.h>
函數定義:char *getpass(const char *prompt)
函數說明:getpass()會顯示參數prompt所指的字符串,然后從/dev/tty中讀取所輸入的密碼,若無法從/dev/tty中讀取則會轉從標准輸入設備中讀取密碼。所輸入的密碼長度限制在128個字符,包含結束字符NULL, 超過長度的字符及換行字符/n將會被忽略。在輸入密碼時getpass()會關閉字符回應,並忽略一些信號如CTRL-C 或 CTRL-Z所產生的信號
返回值   :返回一個指向以NULL結尾的密碼字符串
附加說明:為了系統安全考慮,在般在使用getpass()輸入密碼后,該密碼最好盡快處理完畢,然后將該密碼字符串清除
范例參crypt()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM