PHP crypt() ఫంక్షన్
నిర్వచనం మరియు వినియోగం
crypt() ఫంక్షన్ DES, Blowfish లేదా MD5 అల్గోరిథమ్లతో క్రిప్టేషన్ చేసిన స్ట్రింగ్ను తిరిగి ఇచ్చుతుంది.
వివిధ ఆపరేటింగ్ సిస్టమ్లలో ఈ ఫంక్షన్ ప్రవర్తన వివిధంగా ఉంటుంది, కొన్ని ఆపరేటింగ్ సిస్టమ్లు ఒకకు అధిక అల్గోరిథమ్ రకాలను మద్దతు చేస్తాయి. సంస్థాపన సమయంలో PHP ఏ అల్గోరిథమ్లు లభించబడ్డాయి మరియు ఏ అల్గోరిథమ్ను వాడాలో తనిఖీ చేస్తుంది.
ప్రత్యేక స్లేట్ పారామీటర్ ఫార్మాట్ మరియు పొడ్డుతో ప్రత్యేక క్రిప్టేషన్ మాథ్యుర్డ్ను ఉత్పత్తి చేయడం ద్వారా స్లేట్ కనిష్టం క్రిప్టేషన్ను అధికరించగలదు.
ఈ ప్రాంతంలో crypt() ఫంక్షన్తో కలిసి వాడే కొన్ని కనిష్టాలు ఉన్నాయి. ఈ కనిష్టాలు సంస్థాపన సమయంలో PHP ద్వారా అమర్చబడినవి.
కనిష్టం
[CRYPT_SALT_LENGTH] | డిఫాల్ట్ క్రిప్టేషన్ పొడ్డు. ప్రామాణిక DES క్రిప్టేషన్ వాడబడింది, పొడ్డు 2. |
[CRYPT_STD_DES] | DES అల్గోరిథమ్ ఆధారిత హేష్ను "./0-9A-Za-z" అక్షరాలలోని రెండు అక్షరాలు స్లేట్గా వాడబడుతుంది. స్లేట్లో అనియంత్రిత అక్షరాలను వాడటం క్రిప్ట్() ఫలానికి విఫలం కాగలదు. |
[CRYPT_EXT_DES] | పొడిగిన DES అల్గోరిథమ్ ఆధారిత హేష్. ఇది 9 అక్షరాల స్ట్రింగ్ స్లేట్ వాల్యూ, ఒక హైన్డ్ తో ముందుకు ఉండే 4 బైట్ల లోపల్ స్లేట్ మార్పులు మరియు 4 బైట్ల స్లేట్ వాల్యూ ను కలిగి ఉంటుంది. వాటిని ప్రింటబుల్ అక్షరాలుగా కోడ్ చేయబడింది, ప్రతి అక్షరం 6 బిట్లు, ఫలితంగా కనిపించే అక్షరాలు ప్రాధాన్యత కలిగి ఉంటాయి. 0 నుండి 63 అక్షరాలు "./0-9A-Za-z" లో కోడ్ చేయబడింది. స్లేట్లో అనియంత్రిత అక్షరాలను వాడటం క్రిప్ట్() ఫలానికి విఫలం కాగలదు. |
[CRYPT_MD5] | MD5 散列使用一个以 $1$ 开始的 12 字符的字符串盐值。 |
[CRYPT_BLOWFISH] | Blowfish 算法使用如下盐值:“$2a$”,一个两位 cost 参数,“$” 以及 64 位由 “./0-9A-Za-z” 中的字符组合而成的字符串。在盐值中使用此范围之外的字符将导致 crypt() 返回一个空字符串。两位 cost 参数是循环次数以 2 为底的对数,它的范围是 04-31,超出这个范围将导致 crypt() 失败。 |
CRYPT_SHA256 | SHA-256 పద్ధతి $5$ తో మొదలవుతున్న 16 అక్షరాల సల్ట్ స్ట్రింగ్ ను ఉపయోగిస్తుంది. సల్ట్ స్ట్రింగ్ "rounds=<N>$" తో మొదలవుతే, N నంబర్ ను ఉపయోగించడం ద్వారా హైలేషన్ చోటుచేసుకునే ప్రక్రియలను నిర్దేశించవచ్చు, ఇది Blowfish పద్ధతి యొక్క cost పరామితికి సమానం. డిఫాల్ట్ ప్రక్రియలను 5000 గా నిర్దేశించబడింది, కనిష్టం 1000, గరిష్టం 999,999,999. ఈ పరిధి దాటిన N నంబర్లను సమీప విలువగా మార్చబడతాయి. |
CRYPT_SHA512 | SHA-512 పద్ధతి $6$ తో మొదలవుతున్న 16 అక్షరాల సల్ట్ స్ట్రింగ్ ను ఉపయోగిస్తుంది. సల్ట్ స్ట్రింగ్ "rounds=<N>$" తో మొదలవుతే, N నంబర్ ను ఉపయోగించడం ద్వారా హైలేషన్ చోటుచేసుకునే ప్రక్రియలను నిర్దేశించవచ్చు, ఇది Blowfish పద్ధతి యొక్క cost పరామితికి సమానం. డిఫాల్ట్ ప్రక్రియలను 5000 గా నిర్దేశించబడింది, కనిష్టం 1000, గరిష్టం 999,999,999. ఈ పరిధి దాటిన N నంబర్లను సమీప విలువగా మార్చబడతాయి. |
అనేక పద్ధతులను మద్దతు చేసే సిస్టమ్లో, పైన పేర్కొన్న కనిష్టం అని సెట్ చేయవచ్చు అయితే, లేకపోతే "0" అని సెట్ చేయవచ్చు.
ప్రకటనలు:అనురూప డెక్రైప్షన్ ఫంక్షన్ లేదు. crypt() ఫంక్షన్ ఒక మాత్రాకర్మాన్ని ఉపయోగిస్తుంది.
సంకేతం
crypt(స్ట్రింగ్,సల్ట్)
పరామితులు | వివరణ |
---|---|
స్ట్రింగ్ | అవసరమైనది. కోడ్ చేయబడిన స్ట్రింగ్ ని నిర్దేశించడానికి ఉపయోగించబడుతుంది. |
సల్ట్ | ఎంపికాత్మకం. కోడ్ చేయబడిన అక్షరాల సంఖ్యను పెంచడానికి ఉపయోగించబడే సల్ట్ స్ట్రింగ్, దీనివల్ల కోడ్ చేయబడిన విధంగా గోప్యతను పెంచవచ్చు. సల్ట్ పరామితి అందించకపోతే, PHP ప్రతిసారి స్వయంచాలకంగా ఒక సల్ట్ పరామితిని ఉత్పత్తి చేస్తుంది. |
సాంకేతిక వివరాలు
తిరిగి వచ్చే విలువలు: | గోప్యతను భద్రపరచడానికి సంక్షిప్తమైన 13 అక్షరాలు ఉన్న స్ట్రింగ్ లేదా సల్ట్ తో గోప్యతను భద్రపరచబడిన స్ట్రింగ్ తిరిగి ఇవ్వబడుతుంది. |
PHP వెర్షన్ ఉంది: | 4+ |
అప్డేట్ లాగ్
వర్షన్ | వివరణ |
---|---|
5.3.2 | ఉల్రిచ్ డ్రెప్పర్ అమలును ఆధారంగా, SHA-256 అల్గోరిథమ్ మరియు SHA-512 అల్గోరిథమ్ పైన ఆధారపడిన crypt ను కొత్తగా జోడించబడింది. |
5.3.2 | బ్లోఫీష్ అల్గోరిథమ్ విషయంలో అనియంత్రిత చక్రాల కారణంగా ఏర్పడుతున్న సమస్యను సరిచేసింది, "ఫైల్యూర్" స్ట్రింగ్ను ("*0" లేదా "*1") తిరిగి వచ్చింది, DES అల్గోరిథమ్ వాడకం ప్రయత్నించలేదు. |
5.3.0 | PHP ప్రస్తుతం తన సొంత MD5 Crypt అమలును కలిగివుంది, దానిలో అనుసరించబడుతున్నది స్టాండర్డ్ DES అల్గోరిథమ్, ఎక్స్టెండెడ్ DES అల్గోరిథమ్ మరియు Blowfish అల్గోరిథమ్. జిఎస్టిఎమ్ లో అనుకూలించని అమలును కలిగివుంటే, PHP తన సొంత అమలును వాడుతుంది. |
ఉదాహరణ
ఉదాహరణ 1
ఈ ప్రత్యేకంలో, మేము వివిధ విధానాలను పరీక్షించాము:
<?php // ఇక్కడ రెండు అక్షరాల సెయిల్ట్ if (CRYPT_STD_DES == 1) { echo "Standard DES: ".crypt('something','st')."\n<br>"; } else { echo "Standard DES not supported.\n<br>"; } // 4 అక్షరాల సెయిల్ట్ if (CRYPT_EXT_DES == 1) { echo "Extended DES: ".crypt('something','_S4..some')."\n<br>"; } else { echo "Extended DES not supported.\n<br>"; } // ముందుకు $1$ ప్రారంభించే 12 అక్షరాలు if (CRYPT_MD5 == 1) { echo "MD5: ".crypt('something','$1$somethin$')."\n<br>"; } else { echo "MD5 not supported.\n<br>"; } // ముందుకు $2a$ ప్రారంభించే Salt. ఇక్కడ రెండు నంబర్లు కాస్ట్ పారామిటర్లు: 09. 22 అక్షరాలు if (CRYPT_BLOWFISH == 1) { echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."\n<br>"; } else { echo "Blowfish DES not supported.\n<br>"; } // 16 అక్షరాలు ఉన్న $5$ ప్రారంభించే salt. సరిహద్దు యొక్క మొదటి సంఖ్య మొత్తం 5000. if (CRYPT_SHA256 == 1) { echo "SHA-256: ".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."\n<br>"; else { echo "SHA-256 not supported.\n<br>"; } // 16 అక్షరాలు ఉన్న $5$ ప్రారంభించే salt. సరిహద్దు యొక్క మొదటి సంఖ్య మొత్తం 5000. if (CRYPT_SHA512 == 1) { echo "SHA-512: ".crypt('something','$6$rounds=5000$anexamplestringforsalt$'); } else { echo "SHA-512 not supported."; } ?>
పైని కోడ్ యొక్క అవుట్పుట్లు (ఆపరేటింగ్ సిస్టమ్ ఆధారంగా మారుతాయి):
Standard DES: stqAdD7zlbByI Extended DES: _S4..someQXidlBpTUu6 MD5: $1$somethin$4NZKrUlY6r7K7.rdEOZ0w. Blowfish: $2a$09$anexamplestringforsaleLouKejcjRlExmf1671qw3Khl49R3dfu SHA-256: $5$rounds=5000$anexamplestringf$KIrctqsxo2wrPg5Ag/hs4jTi4PmoNKQUGWFXlVy9vu9 SHA-512: $6$rounds=5000$anexamplestringf$Oo0skOAdUFXkQxJpwzO05wgRHG0dhuaPBaOU/ oNbGpCEKlf/7oVM5wn6AN0w2vwUgA0O24oLzGQpp1XKI6LLQ0.