Man page - crypt_r(3)

Packages contains this manual

Available languages:

en fr pl tr ja de

Manual

CRYPT

名 前
書 åŧ
čĒŦ 明
čŋ” り 値
エ ナ ãƒŧ
åąž 性
æē– 拠
æŗ¨ 意
Availability in glibc
Features in glibc
é–ĸ 逪 項 į›Ž
こ ぎ 文 書 ãĢ つ い ãĻ

名 前

crypt, crypt_r - パ ゚ ワ ãƒŧ ド と デ ãƒŧ ã‚ŋ ぎ 暗 åˇ 化

書 åŧ

#define _XOPEN_SOURCE /* feature_test_macros(7) 参 į…§ */
#include <unistd.h>

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

#define _GNU_SOURCE /* feature_test_macros(7) 参 į…§ */
#include <crypt.h>

char *crypt_r(const char * key , const char * salt ,
struct crypt_data *
data );

-lcrypt で ãƒĒ ãƒŗ ク す る 。

čĒŦ 明

crypt () は パ ゚ ワ ãƒŧ ド 暗 åˇ 化 é–ĸ 数 で あ る 。 éĩ æŽĸ į´ĸ ぎ ハ ãƒŧ ド ã‚Ļ ェ ã‚ĸ ãĢ よ る 原 čŖ… を åύ げ る よ う ãĢ (そ ぎ äģ– ãĢ も い ろ い ろ ) 変 更 し た Data Encryption Standard ã‚ĸ ãƒĢ ゴ ãƒĒ ã‚ē ム を 元 ãĢ し ãĻ い る 。

key は ãƒĻ ãƒŧ ã‚ļ ãƒŧ が å…Ĩ 力 す る パ ゚ ワ ãƒŧ ド で あ る 。

salt は 集 合 [ a-zA-Z0-9./ ] か ら 選 ば れ た 2 文 字 ぎ 文 字 列 で あ る 。 こ ぎ 文 字 列 は ã‚ĸ ãƒĢ ゴ ãƒĒ ã‚ē ム ぎ å‡ē 力 を 4096 通 り ãĢ か き äšą す ぎ ãĢ äŊŋ わ れ る 。

key ぎ 最 初 ぎ 8 文 字 ぎ 各 文 字 か ら 下 äŊ 7 ビ ッ ト を と ãŖ ãĻ 56 ビ ッ ト ぎ éĩ が åž— ら れ る 。 こ ぎ 56 ビ ッ ト ぎ éĩ は į‰š 厚 ぎ 文 字 列 (ãĩ つ う は す ず ãĻ 0 ぎ 文 字 列 ) を įš° り čŋ” し 暗 åˇ 化 す る ぎ ãĢ ᔍ い ら れ る 。 čŋ” り 値 は 暗 åˇ 化 さ れ た パ ゚ ワ ãƒŧ ド へ ぎ ポ イ ãƒŗ ã‚ŋ ãƒŧ で 、 13 ぎ 印 字 可 čƒŊ ãĒ ASCII 文 字 か ら ãĒ る (最 初 ぎ 2 文 字 は salt そ ぎ も ぎ )。 čŋ” り 値 は 、 é–ĸ 数 å‘ŧ å‡ē し ぎ た ãŗ ãĢ 上 書 き さ れ る 静 įš„ ãĒ デ ãƒŧ ã‚ŋ へ ぎ ポ イ ãƒŗ ã‚ŋ ãƒŧ で あ る 。

č­Ļ 告 : éĩ įŠē 間 は 2**56 = 7.2e16 ぎ 可 čƒŊ ãĒ 値 か ら 成 る 。 こ ぎ éĩ įŠē 間 ぎ 全 æŽĸ į´ĸ は åŧˇ 力 ãĒ ä¸Ļ 列 計 įŽ— 抟 を äŊŋ え ば 可 čƒŊ で あ る 。 ぞ た crack (1) ぎ よ う ãĒ ã‚Ŋ フ ト ã‚Ļ ェ ã‚ĸ は こ ぎ éĩ įŠē 間 ぎ 中 で 、 多 く ぎ äēē ãĢ パ ゚ ワ ãƒŧ ド と し ãĻ äŊŋ わ れ る よ う ãĒ éĩ ãĢ つ い ãĻ ぎ 全 æŽĸ į´ĸ が 可 čƒŊ で あ る 。 そ れ ゆ え 、 パ ゚ ワ ãƒŧ ド を 選 択 す る と き ãĢ は 、 す く ãĒ く と も 、 一 čˆŦ įš„ ãĢ äŊŋ わ れ る 単 čĒž と 名 前 は éŋ け る ず き で あ る 。 passwd (1) を äŊŋ う 時 ãĢ は ク ナ ッ ク さ れ う る パ ゚ ワ ãƒŧ ド ãĢ つ い ãĻ ぎ 検 æŸģ を す る こ と が 推 åĨ¨ さ れ る 。

DES ã‚ĸ ãƒĢ ゴ ãƒĒ ã‚ē ム ãĢ は い く つ か ぎ į™– が あ り 、 そ れ ãĢ よ ãŖ ãĻ パ ゚ ワ ãƒŧ ド čĒ č¨ŧ äģĨ 外 ãĢ crypt () を äŊŋ う ぎ は た い へ ん よ く ãĒ い 選 択 と ãĒ ãŖ ãĻ い る 。 も し crypt () を 暗 åˇ プ ロ ジ ェ ク ト ãĢ äŊŋ お う と い う æĄˆ を も ãŖ ãĻ い る ãĒ ら ば 、 そ れ は や め た ãģ う が よ い 。 暗 åˇ 化 ãĢ つ い ãĻ ぎ よ い æœŦ と čǰ で も å…Ĩ 手 で き る DES ナ イ ブ ナ ãƒĒ ぎ ã˛ と つ を 手 ãĢ い れ る ず き だ 。

crypt_r () は crypt () ぎ 再 å…Ĩ 可 čƒŊ į‰ˆ で あ る 。 data で į¤ē さ れ る 構 造 äŊ“ は įĩ 果 デ ãƒŧ ã‚ŋ ぎ äŋ 存 と 情 å ą ぎ įŽĄ ᐆ ãĢ äŊŋ わ れ る 。 こ ぎ 構 造 äŊ“ ãĢ 寞 し ãĻ (ãƒĄ ãƒĸ ãƒĒ ãƒŧ を 剞 り åŊ“ ãĻ る こ と äģĨ 外 ãĢ )å‘ŧ ãŗ å‡ē し 元 が す る ず き 唯 一 ぎ こ と は 、 crypt_r () ぎ 初 回 ぎ å‘ŧ ãŗ å‡ē し ぎ 前 ãĢ data->initialized を ã‚ŧ ロ ãĢ す る こ と だ け で あ る 。

čŋ” り 値

成 功 ぎ å ´ 合 ãĢ は 、 暗 åˇ 化 さ れ た パ ゚ ワ ãƒŧ ド へ ぎ ポ イ ãƒŗ ã‚ŋ ãƒŧ が čŋ” さ れ る 。 エ ナ ãƒŧ ぎ å ´ 合 ãĢ は NULL が čŋ” さ れ る 。

エ ナ ãƒŧ

EINVAL

salt が 間 違 ãŖ た フ り ãƒŧ マ ッ ト で あ る 。

ENOSYS

crypt () é–ĸ 数 が 原 čŖ… さ れ ãĻ い ãĒ い 。 多 分 ã‚ĸ ãƒĄ ãƒĒ ã‚Ģ ぎ čŧ¸ å‡ē čĻ åˆļ ぎ た め ãĢ 。

EPERM

/proc/sys/crypto/fips_enabled が 0 で ãĒ い 値 で 、 DES ãĒ お ぎ åŧą い 暗 åˇ ã‚ŋ イ プ を 刊 ᔍ し よ う と し た 。

åąž 性

こ ぎ ᝀ で äŊŋ ᔍ さ れ ãĻ い る ᔍ čĒž ぎ čĒŦ 明 ãĢ つ い ãĻ は 、 attributes (7) を 参 į…§ 。

Image grohtml-46588-1.png

æē– 拠

crypt (): POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD. crypt_r () は GNU æ‹Ą åŧĩ で あ る 。

æŗ¨ 意

Availability in glibc

The crypt (), encrypt (3), and setkey (3) functions are part of the POSIX.1-2008 XSI Options Group for Encryption and are optional. If the interfaces are not available, then the symbolic constant _XOPEN_CRYPT is either not defined, or it is defined to -1 and availability can be checked at run time with sysconf (3). This may be the case if the downstream distribution has switched from glibc crypt to libxcrypt . When recompiling applications in such distributions, the programmer must detect if _XOPEN_CRYPT is not available and include <crypt.h> for the function prototypes; otherwise libxcrypt is an ABI-compatible drop-in replacement.

Features in glibc

こ ぎ é–ĸ 数 ぎ glibc į‰ˆ は čŋŊ 加 ぎ 暗 åˇ 化 ã‚ĸ ãƒĢ ゴ ãƒĒ ã‚ē ム ãĢ 寞 åŋœ し ãĻ い る 。

If salt is a character string starting with the characters "$ id $" followed by a string optionally terminated by "$", then the result has the form:

$ id $ salt $ encrypted

DES を äŊŋ う äģŖ ã‚ り ãĢ 、 id で äŊŋ ᔍ す る 暗 åˇ 化 手 æŗ• を 識 åˆĨ し 、 こ れ が パ ゚ ワ ãƒŧ ド 文 字 列 ぎ 掋 り ぎ 部 分 を č§Ŗ 釈 す る æ–š æŗ• を æąē 厚 す る 。 id ぎ 値 と し ãĻ 、 äģĨ 下 ぎ 値 ãĢ 寞 åŋœ し ãĻ い る :

Image grohtml-46588-2.png

Thus, $5$ salt $ encrypted and $6$ salt $ encrypted contain the password encrypted with, respectively, functions based on SHA-256 and SHA-512.

" salt " stands for the up to 16 characters following "$ id $" in the salt. The " encrypted " part of the password string is the actual computed password. The size of this string is fixed:

Image grohtml-46588-3.png

" salt " と " encrypted " ぎ 文 字 は [ a-zA-Z0-9./ ] ぎ 集 合 か ら 選 ば れ る 。 MD5 と SHA ぎ 原 čŖ… で は 、 key 全 äŊ“ が 意 呺 が あ る (DES ぎ å ´ 合 ãĢ は 最 初 ぎ 8 文 字 だ け ãĢ 意 呺 が あ る )。

Since glibc 2.7, the SHA-256 and SHA-512 implementations support a user-supplied number of hashing rounds, defaulting to 5000. If the "$ id $" characters in the salt are followed by "rounds= xxx $", where xxx is an integer, then the result has the form

$ id $ rounds=yyy $ salt $ encrypted

where yyy is the number of hashing rounds actually used. The number of rounds actually used is 1000 if xxx is less than 1000, 999999999 if xxx is greater than 999999999, and is equal to xxx otherwise.

é–ĸ 逪 項 į›Ž

login (1), passwd (1), encrypt (3), getpass (3), passwd (5)

こ ぎ 文 書 ãĢ つ い ãĻ

こ ぎ man ペ ãƒŧ ジ は Linux man-pages プ ロ ジ ェ ク ト ぎ ãƒĒ ãƒĒ ãƒŧ ゚ 5.10 ぎ 一 部 で あ る 。 プ ロ ジ ェ ク ト ぎ čĒŦ 明 と バ グ å ą 告 ãĢ é–ĸ す る 情 å ą は https://www.kernel.org/doc/man-pages/ ãĢ 書 か れ ãĻ い る 。