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.