PHP क्रिप्ट () फ़ंक्शन
❮ पीएचपी स्ट्रिंग संदर्भ
परिभाषा और उपयोग
क्रिप्ट () फ़ंक्शन DES, ब्लोफिश, या MD5 एल्गोरिदम का उपयोग करके एक हैशेड स्ट्रिंग देता है।
यह फ़ंक्शन अलग-अलग ऑपरेटिंग सिस्टम पर अलग-अलग व्यवहार करता है। PHP जाँचता है कि कौन से एल्गोरिदम उपलब्ध हैं और स्थापित होने पर कौन से एल्गोरिदम का उपयोग करना है।
नमक पैरामीटर वैकल्पिक है। हालाँकि, क्रिप्ट () नमक के बिना एक कमजोर पासवर्ड बनाता है। बेहतर सुरक्षा के लिए एक मजबूत पर्याप्त नमक निर्दिष्ट करना सुनिश्चित करें।
कुछ स्थिरांक हैं जिनका उपयोग क्रिप्ट () फ़ंक्शन के साथ किया जाता है। इन स्थिरांक का मान PHP द्वारा स्थापित होने पर सेट किया जाता है।
स्थिरांक:
- [CRYPT_STD_DES] - मानक डीईएस-आधारित हैश, "./0-9A-Za-z" वर्णमाला से दो वर्ण वाले नमक के साथ। नमक में अमान्य वर्णों का उपयोग करने से यह कार्य विफल हो जाएगा।
- [CRYPT_EXT_DES] - नौ वर्ण वाले नमक के साथ विस्तारित DES-आधारित हैश जिसमें अंडरस्कोर होता है और उसके बाद 4 बाइट्स की पुनरावृत्ति गणना और 4 बाइट्स नमक होता है। इन्हें प्रिंट करने योग्य वर्णों के रूप में एन्कोड किया गया है, प्रति वर्ण 6 बिट, कम से कम महत्वपूर्ण वर्ण पहले। 0 से 63 के मान "./0-9A-Za-z" के रूप में एन्कोड किए गए हैं। नमक में अमान्य वर्णों का उपयोग करने से कार्य विफल हो जाएगा।
- [CRYPT_MD5] - $1$ . से शुरू होने वाले 12 वर्ण के नमक के साथ MD5 हैशिंग
- [CRYPT_BLOWFISH] - 2a$, $2x$, या $2y$ से शुरू होने वाले नमक के साथ ब्लोफिश हैशिंग, दो अंकों का लागत पैरामीटर "$", और वर्णमाला "./0-9A-Za-z" से 22 वर्ण . वर्णमाला के बाहर वर्णों का उपयोग करने से यह फ़ंक्शन शून्य-लंबाई वाली स्ट्रिंग लौटाएगा। "$" पैरामीटर अंतर्निहित ब्लोफिश-बैशेड हैशिंग एल्गोरिथम के लिए पुनरावृत्ति गणना का आधार-2 लघुगणक है और 04-31 की सीमा में होना चाहिए। इस सीमा के बाहर के मान फ़ंक्शन को विफल कर देंगे।
- [CRYPT_SHA_256] - SHA-256 हैश, जिसमें 16 वर्ण का नमक है, $5$ से शुरू होता है। यदि नमक स्ट्रिंग "राउंड = <एन> $" से शुरू होती है, तो एन के संख्यात्मक मान का उपयोग यह इंगित करने के लिए किया जाता है कि हैशिंग लूप को कितनी बार निष्पादित किया जाना चाहिए, ब्लोफिश पर लागत पैरामीटर की तरह। राउंड की डिफ़ॉल्ट संख्या 5000 है, न्यूनतम 1000 और अधिकतम 999,999,999 है। इस सीमा के बाहर N के किसी भी चयन को निकटतम सीमा तक छोटा कर दिया जाएगा।
- [CRYPT_SHA_512] - SHA-512 हैश के साथ 16 वर्ण का नमक $6$ से शुरू होता है। यदि नमक स्ट्रिंग "राउंड = <एन> $" से शुरू होती है, तो एन के संख्यात्मक मान का उपयोग यह इंगित करने के लिए किया जाता है कि हैशिंग लूप को कितनी बार निष्पादित किया जाना चाहिए, ब्लोफिश पर लागत पैरामीटर की तरह। राउंड की डिफ़ॉल्ट संख्या 5000 है, न्यूनतम 1000 और अधिकतम 999,999,999 है। इस सीमा के बाहर N के किसी भी चयन को निकटतम सीमा तक छोटा कर दिया जाएगा।
सिस्टम पर जहां यह फ़ंक्शन एकाधिक एल्गोरिदम का समर्थन करता है, ऊपर स्थिरांक समर्थित होने पर "1" और अन्यथा "0" पर सेट होते हैं।
नोट: कोई डिक्रिप्ट फ़ंक्शन नहीं है। क्रिप्ट () फ़ंक्शन एक-तरफ़ा एल्गोरिथम का उपयोग करता है।
वाक्य - विन्यास
crypt(str,salt)
पैरामीटर मान
Parameter | Description |
---|---|
str | Required. Specifies the string to be hashed |
salt | Optional. A salt string to base the hashing on |
टेक्निकल डिटेल
प्रतिलाभ की मात्रा: | एन्कोडेड स्ट्रिंग या एक स्ट्रिंग लौटाता है जो 13 वर्णों से छोटा है और विफलता पर नमक से अलग होने की गारंटी है |
---|---|
पीएचपी संस्करण: | 4+ |
चेंजलॉग: | PHP 5.6.0 - नमक छोड़े जाने पर E_NOTICE सुरक्षा चेतावनी दिखाता है। PHP 5.3.7 - $2x$ और $2y$ ब्लोफिश मोड जोड़ा गया। PHP 5.3.2 - SHA-256 और SHA-512 जोड़ा गया। अमान्य राउंड पर फिक्स्ड ब्लोफिश व्यवहार "विफलता" स्ट्रिंग ("*0" या "*1") लौटाता है, बजाय डेस पर वापस आने के। PHP 5.3.0 - PHP में अब MD5 क्रिप्ट, स्टैंडर्ड डीईएस, विस्तारित डीईएस और ब्लोफिश एल्गोरिदम के लिए अपना कार्यान्वयन शामिल है और यदि सिस्टम में एक या अधिक एल्गोरिदम के लिए समर्थन की कमी है तो इसका उपयोग करेगा। |
और ज्यादा उदाहरण
उदाहरण
इस उदाहरण में हम विभिन्न एल्गोरिदम का परीक्षण करेंगे:
<?php
// 2 character salt
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt('something','st')."\n<br>";
}
else
{
echo "Standard DES not supported.\n<br>";
}
// 4 character salt
if (CRYPT_EXT_DES == 1)
{
echo "Extended DES: ".crypt('something','_S4..some')."\n<br>";
}
else
{
echo "Extended DES not supported.\n<br>";
}
// 12 character salt starting with $1$
if (CRYPT_MD5 == 1)
{
echo "MD5: ".crypt('something','$1$somethin$')."\n<br>";
}
else
{
echo "MD5 not supported.\n<br>";
}
// Salt starting with $2a$. The two digit cost parameter: 09. 22 characters
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."\n<br>";
}
else
{
echo "Blowfish DES not supported.\n<br>";
}
// 16 character salt starting with $5$. The default number of rounds is 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 character salt starting with $6$. The default number of rounds is 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.
❮ पीएचपी स्ट्रिंग संदर्भ