原型:
char *crypt(const char *key, const char *salt);
標准說明:
crypt()算法會接受一個最長可達8字符的密鑰(即key),並施以數據加密算法(DES)的一種變體。salt參數指向一個兩個字符的字符串,用來改變DES算法。該函數返回一個指針,指向長度13個字符的字符串。
在glibc2中crypt函數擴展使用:
crypt支持的額外加密算法有MD5、Blowfish(某些特定的Linux系統支持)、SHA-256(glibc2.7開始)、SHA-512(glibc2.7開始),並通過salt以“$id$salt$encrypted” 這樣的格式區分不同算法,根據id的不同值選擇不同的加密算法來代替默認的DES算法,id的格式如下:
ID | Method ───────────────────────────────────────────── 1 | MD5 2a | Blowfish (not in mainline glibc; added in some | Linux distributions) 5 | SHA-256 (since glibc 2.7) 6 | SHA-512 (since glibc 2.7)
$5$salt$encrypted 的salt代表crypt函數使用SHA- 256加密算法
$6$salt$encrypted 的salt代表crypt函數使用SHA-512加密算法
$salt$ 中的salt最多支持長度為16字符的字符串,相比默認的DES算法支持最長為2字符有了很大的改進,最后crypt的返回值根據加密算法的不同也有不同長度的字符串返回。
MD5 | 22 characters SHA-256 | 43 characters SHA-512 | 86 characters