PHP crypt() ਫੰਕਸ਼ਨ
ਨਿਰਧਾਰਣ ਅਤੇ ਵਰਤੋਂ
crypt() ਫੰਕਸ਼ਨ DES, Blowfish ਜਾਂ MD5 ਅਲਗੋਰਿਥਮ ਨਾਲ ਸ਼ਫਰ ਕੀਤੇ ਗਏ ਸਟਰਿੰਗ ਨੂੰ ਵਾਪਸ ਦਿੰਦਾ ਹੈ。
ਵੱਖ-ਵੱਖ ਆਪਰੇਟਿੰਗ ਸਿਸਟਮਾਂ 'ਤੇ, ਇਹ ਫੰਕਸ਼ਨ ਦਾ ਵਿਵਹਾਰ ਵੱਖ-ਵੱਖ ਹੁੰਦਾ ਹੈ, ਕੁਝ ਆਪਰੇਟਿੰਗ ਸਿਸਟਮਾਂ ਵੱਖ-ਵੱਖ ਅਲਗੋਰਿਥਮ ਪ੍ਰਕਾਰਾਂ ਨੂੰ ਸਮਰਥਨ ਕਰਦੇ ਹਨ। ਇੰਸਟਾਲੇਸ਼ਨ ਸਮੇਂ, PHP ਕੀ ਅਲਗੋਰਿਥਮ ਉਪਲੱਬਧ ਹੈ ਅਤੇ ਕਿਸ ਅਲਗੋਰਿਥਮ ਦੀ ਵਰਤੋਂ ਕਰੇਗਾ, ਇਹ ਚੇਕ ਕਰਦਾ ਹੈ。
ਵਿਸ਼ੇਸ਼ ਅਲਗੋਰਿਥਮ ਨਮੂਨਾ ਪੈਰਾਮੀਟਰ ਦੇ ਫਾਰਮੈਟ ਅਤੇ ਲੰਬਾਈ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ। salt ਨੂੰ ਵਰਤਣ ਨਾਲ ਵਿਸ਼ੇਸ਼ ਸ਼ਫਰ ਮੇਥੋਡ ਦੁਆਰਾ ਪੈਦਾ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਸਟਰਿੰਗਾਂ ਦੀ ਸੰਖਿਆ ਵਧਾਉਣ ਨਾਲ, salt ਸ਼ਫਰ ਨੂੰ ਸੁਰੱਖਿਅਤ ਬਣਾ ਸਕਦਾ ਹੈ。
ਇੱਥੇ crypt() ਫੰਕਸ਼ਨ ਦੇ ਨਾਲ ਵਰਤੇ ਜਾਣ ਵਾਲੀਆਂ ਸਥਾਰਿਤਾਵਾਂ ਹਨ। ਇਹ ਸਥਾਰਿਤਾਵਾਂ ਦੇ ਮੁੱਲ ਇੰਸਟਾਲੇਸ਼ਨ ਸਮੇਂ PHP ਦੁਆਰਾ ਸੈਟ ਕੀਤੇ ਜਾਂਦੇ ਹਨ。
ਸਥਾਰਿਤਾ
[CRYPT_SALT_LENGTH] | ਮੂਲਰ ਸ਼ਫਰ ਲੰਬਾਈ |
[CRYPT_STD_DES] | ਮਿਆਰੀ DES ਅਲਗੋਰਿਥਮ ਦੇ ਅਧਾਰਿਤ ਦੀਸੇਕਸ਼ਨ ਦੀ ਨਮੂਨਾ "./0-9A-Za-z" ਅੱਖਰਾਂ ਵਿੱਚ ਦੋ ਅੱਖਰਾਂ ਵਜੋਂ ਹੈ। ਨਮੂਨੇ ਵਿੱਚ ਗੈਰ ਮਾਨਤਾ ਹੋਣ ਵਾਲੇ ਅੱਖਰਾਂ ਦੀ ਵਰਤੋਂ ਨਾਲ crypt() ਫੈਲਾਉਣ ਵਿੱਚ ਫੈਲਾਉਣ ਵਿੱਚ ਅਸਫਲਤਾ ਹੋ ਸਕਦੀ ਹੈ。 |
[CRYPT_EXT_DES] | ਵਿਸਤ੍ਰਿਤ ਦੀਸੇਕਸ਼ਨ ਆਧਾਰਿਤ DES ਅਲਗੋਰਿਥਮ। ਉਸ ਦੀ ਨਮੂਨਾ ਹੈ 9 ਅੱਖਰਾਂ ਦਾ ਸਟਰਿੰਗ, ਜਿਸ ਵਿੱਚ ਇੱਕ ਹਾਰਪਰ ਕੇਵਾਲ ਮੁਕਾਬਲੇ ਅਤੇ 4 ਬਾਇਟ ਕਾਇਕਲ ਵਾਰੀ ਅਤੇ 4 ਬਾਇਟ ਨਮੂਨਾ ਹੈ। ਉਹਨਾਂ ਨੂੰ ਪ੍ਰਿੰਟੇਬਲ ਅੱਖਰਾਂ ਵਿੱਚ ਕੋਡ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਹਰ ਅੱਖਰ 6 ਸਥਾਨਾ, ਨਿਯੰਤਰਿਤ ਸਥਾਨਾ ਵਿੱਚ ਸਭ ਤੋਂ ਘੱਟ ਪ੍ਰਾਥਮਿਕਤਾ ਹੈ। 0 ਤੋਂ 63 ਨੂੰ "./0-9A-Za-z" ਵਿੱਚ ਕੋਡ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਨਮੂਨੇ ਵਿੱਚ ਗੈਰ ਮਾਨਤਾ ਹੋਣ ਵਾਲੇ ਅੱਖਰਾਂ ਦੀ ਵਰਤੋਂ ਨਾਲ crypt() ਫੈਲਾਉਣ ਵਿੱਚ ਫੈਲਾਉਣ ਵਿੱਚ ਅਸਫਲਤਾ ਹੋ ਸਕਦੀ ਹੈ。 |
[CRYPT_MD5] | MD5 散列使用一个以 $1$ 开始的 12 字符的字符串盐值。 |
[CRYPT_BLOWFISH] | Blowfish ਅਲਗੋਰਿਥਮ ਇੱਕ "$2a$" ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੀ ਸਲਟ, ਇੱਕ ਦੋ ਅੰਕ ਦਾ cost ਪੈਰਾਮੀਟਰ, "$" ਅਤੇ 64 ਬਿਟ ਦਾ ਸਟਰਿੰਗ, ਜੋ "./0-9A-Za-z" ਦੇ ਅੰਕਾਂ ਤੋਂ ਬਣਿਆ ਹੋਵੇ, ਦਾ ਉਪਯੋਗ ਕਰਦਾ ਹੈ।ਸਲਟ ਵਿੱਚ ਇਸ ਦੇ ਬਾਹਰ ਦੇ ਅੰਕਾਂ ਦਾ ਉਪਯੋਗ ਕਰਨਾ ਸ਼ਫਰ ਫੰਕਸ਼ਨ ਵਾਲੇ ਖਾਲੀ ਸਟਰਿੰਗ ਵਾਲੇ ਪ੍ਰਤੀਕਰਮ ਦੇ ਕਾਰਣ ਹੈ।ਦੋ ਅੰਕ ਦਾ cost ਪੈਰਾਮੀਟਰ ਦੋ ਦੀ ਦਿਸ਼ਾ ਵਿੱਚ ਪ੍ਰਕਰਣਾਂ ਦੀ ਸੰਖਿਆ ਦਾ ਲਗਭਗ ਹੈ, ਇਸ ਦਾ ਦਾਇਰਾ 04-31 ਹੈ।ਇਸ ਦੇ ਬਾਹਰ ਦੇ ਪੈਰਾਮੀਟਰ ਦਾ ਉਪਯੋਗ ਕਰਨਾ ਸ਼ਫਰ ਫੰਕਸ਼ਨ ਦੇ ਫੈਲਣ ਦੇ ਕਾਰਣ ਹੈ。 |
CRYPT_SHA256 | SHA-256 ਅਲਗੋਰਿਥਮ ਇੱਕ $5$ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੀ 16 ਅੰਕ ਦੀ ਸਲਟ ਸਟਰਿੰਗ ਦਾ ਉਪਯੋਗ ਕਰਦਾ ਹੈ।ਜੇਕਰ ਸਲਟ ਸਟਰਿੰਗ "rounds=<N>$" ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ ਤਾਂ N ਦਾ ਨੰਬਰ ਹਰੇਕ ਹਰਕਤ ਦੇ ਪ੍ਰਕਰਣਾਂ ਦੀ ਸੰਖਿਆ ਨੂੰ ਨਿਰਧਾਰਿਤ ਕਰੇਗਾ, ਇਹ ਬਲੌਫਿਸ਼ ਅਲਗੋਰਿਥਮ ਦੇ cost ਪੈਰਾਮੀਟਰ ਨਾਲ ਸਮਾਨ ਹੈ।ਮੂਲਤਵੀ ਪ੍ਰਕਰਣਾਂ ਦੀ ਸੰਖਿਆ 5000 ਹੈ, ਨਾਲਹੀਂ ਸਭ ਤੋਂ ਘੱਟ 1000 ਅਤੇ ਸਭ ਤੋਂ ਵੱਧ 999,999,999 ਹੈ।ਇਸ ਦੇ ਬਾਹਰ ਦੇ N ਦਾ ਮੁੱਲ ਨੂੰ ਨਜ਼ਦੀਕੀ ਮੁੱਲ ਵਿੱਚ ਬਦਲ ਦਿੱਤਾ ਜਾਵੇਗਾ。 |
CRYPT_SHA512 | SHA-512 ਅਲਗੋਰਿਥਮ ਇੱਕ $6$ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੀ 16 ਅੰਕ ਦੀ ਸਲਟ ਸਟਰਿੰਗ ਦਾ ਉਪਯੋਗ ਕਰਦਾ ਹੈ।ਜੇਕਰ ਸਲਟ ਸਟਰਿੰਗ "rounds=<N>$" ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ ਤਾਂ N ਦਾ ਨੰਬਰ ਹਰੇਕ ਹਰਕਤ ਦੇ ਪ੍ਰਕਰਣਾਂ ਦੀ ਸੰਖਿਆ ਨੂੰ ਨਿਰਧਾਰਿਤ ਕਰੇਗਾ, ਇਹ ਬਲੌਫਿਸ਼ ਅਲਗੋਰਿਥਮ ਦੇ cost ਪੈਰਾਮੀਟਰ ਨਾਲ ਸਮਾਨ ਹੈ।ਮੂਲਤਵੀ ਪ੍ਰਕਰਣਾਂ ਦੀ ਸੰਖਿਆ 5000 ਹੈ, ਨਾਲਹੀਂ ਸਭ ਤੋਂ ਘੱਟ 1000 ਅਤੇ ਸਭ ਤੋਂ ਵੱਧ 999,999,999 ਹੈ।ਇਸ ਦੇ ਬਾਹਰ ਦੇ N ਦਾ ਮੁੱਲ ਨੂੰ ਨਜ਼ਦੀਕੀ ਮੁੱਲ ਵਿੱਚ ਬਦਲ ਦਿੱਤਾ ਜਾਵੇਗਾ。 |
ਜਿਸ ਤੰਤਰ 'ਤੇ ਇਹ ਫੰਕਸ਼ਨ ਮਦਦ ਕਰਦਾ ਹੈ ਉੱਤੇ ਉਸ ਵਿੱਚ ਉਪਰੋਕਤ ਕੰਸਟੈਂਟਸ ਦੀ ਹਾਜ਼ਰੀ ਹੈ ਤਾਂ ਉਸ ਨੂੰ "1" ਮੁੱਲ ਦੇਣਾ ਹੈ ਨਹੀਂ ਤਾਂ "0" ਮੁੱਲ ਦੇਣਾ ਹੈ。
ਟਿੱਪਣੀਆਂ:ਕੋਈ ਮੁਕਤਵਰ ਸ਼ਫਰ ਫੰਕਸ਼ਨ ਨਹੀਂ ਹੈ।crypt() ਫੰਕਸ਼ਨ ਇੱਕ ਇੱਕ ਦਿਸ਼ਾ ਵਾਲੇ ਅਲਗੋਰਿਥਮ ਦਾ ਉਪਯੋਗ ਕਰਦਾ ਹੈ。
ਸਿਧਾਂਤ
crypt(str,salt)
ਪੈਰਾਮੀਟਰ | ਵਰਣਨ |
---|---|
str | ਲਾਜ਼ਮੀ।ਸ਼ਫਰ ਕਰਨੇ ਵਾਲੇ ਸਟਰਿੰਗ ਨੂੰ ਨਿਰਧਾਰਿਤ ਕਰੋ。 |
salt | ਵਿਕਲਪਿਕ।ਸ਼ਫਰ ਕੀਤੇ ਗਏ ਅੰਕਾਂ ਦੀ ਸੰਖਿਆ ਵਧਾਉਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਤਾਂ ਕਿ ਸ਼ਫਰ ਕੀਤੇ ਗਏ ਸਟਰਿੰਗ ਦੀ ਸੁਰੱਖਿਆ ਵਧੇ।ਜੇਕਰ salt ਪੈਰਾਮੀਟਰ ਨਾ ਦਿੱਤਾ ਗਿਆ ਹੈ ਤਾਂ ਹਰ ਵਾਰੀ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਉੱਤੇ PHP ਰੰਦਮੀ ਸਲਟ ਪੈਦਾ ਕਰੇਗਾ。 |
ਤਕਨੀਕੀ ਵੇਰਵਾ
ਵਾਪਸੀ ਮੁੱਲ: | ਗੈਰ ਸੁਰੱਖਿਅਤ ਹੋਣ ਉੱਤੇ ਸਲਟ ਨਾਲ ਵੱਖਰਾ ਹੋਣ ਵਾਸਤੇ 13 ਅੰਕ ਤੋਂ ਘੱਟ ਹੋਣ ਵਾਲਾ ਸਟਰਿੰਗ ਜਾਂ ਸ਼ਫਰ ਕੀਤੇ ਗਏ ਸਟਰਿੰਗ ਦਾ ਪਰਿਵਰਤਨ ਕਰੋ。 |
PHP ਵਰਜਨ: | 4+ |
ਅੱਪਡੇਟ ਲਾਗ
ਸੰਸਕਰਣ | ਵਿਵਰਣ |
---|---|
5.3.2 | Ulrich Drepper ਦੀ ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ ਦੇ ਅਧਾਰ 'ਤੇ, SHA-256 ਐਲਗੋਰਿਥਮ ਅਤੇ SHA-512 ਐਲਗੋਰਿਥਮ ਦੇ ਅਧਾਰ 'ਤੇ crypt ਨੂੰ ਨਵੀਂ ਰੂਪ ਰੇਖਾ ਦਿੱਤੀ ਗਈ ਹੈ。 |
5.3.2 | Blowfish ਐਲਗੋਰਿਥਮ ਦੇ ਗਲਤ ਸਰਕੂਲਸ ਕਾਰਨ ਪ੍ਰਸਤਾਵਿਤ ਮੁੱਦੇ ਸੁਧਾਰੇ ਗਏ ਹਨ،"ਫੇਲੂ" ਸਟ੍ਰਿੰਗ ('*0' ਜਾਂ '*1') ਵਾਪਸ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ ਨਾਲ ਹੀ DES ਐਲਗੋਰਿਥਮ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ。 |
5.3.0 | PHP ਹੁਣ ਆਪਣੇ ਆਪਣੇ MD5 Crypt ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ ਨੂੰ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ,ਜਿਸ ਵਿੱਚ ਮਿਆਰਟੀਡੇਸ ਐਲਗੋਰਿਥਮ, ਵਿਸਤ੍ਰਿਤ DES ਐਲਗੋਰਿਥਮ ਅਤੇ Blowfish ਐਲਗੋਰਿਥਮ ਸ਼ਾਮਲ ਹਨ।ਜੇਕਰ ਸਿਸਟਮ ਵਿੱਚ ਸਹੀ ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ ਮੰਗਿਆ ਜਾਂਦਾ ਹੈ ਤਾਂ PHP ਆਪਣੇ ਆਪਣੇ ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ ਨੂੰ ਵਰਤੇਗਾ。 |
ਇਨਸਟੈਂਸ
ਉਦਾਹਰਣ 1
ਇਸ ਉਦਾਹਰਣ ਵਿੱਚ، ਅਸੀਂ ਵੱਖ-ਵੱਖ ਐਲਗੋਰਿਥਮਾਂ ਨੂੰ ਟੈਸਟ ਕਰਾਂਗੇ:
<?php // ਦੋ ਅੰਕਾਂ ਦਾ salt 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>"; } // ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੀ 12 ਅੱਖਰ if (CRYPT_MD5 == 1) { echo "MD5: ".crypt('something','$1$somethin$')."\n<br>"; } else { echo "MD5 not supported.\n<br>"; } // ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲਾ Salt。ਦੋ ਅੰਕਾਂ ਦਾ cost ਪੈਰਾਮੀਟਰ: 09. 22 ਅੱਖਰ if (CRYPT_BLOWFISH == 1) { echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."\n<br>"; } else { echo "Blowfish DES not supported.\n<br>"; } // شالٹ کا شروع $5$ سے ہوتا ہے، 16 حرف کا شالٹ کا مقدار کا دفعہ 5000 ہے。 if (CRYPT_SHA256 == 1) { echo "SHA-256: ".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."\n<br>"; else { echo "SHA-256 not supported.\n<br>"; } // شالٹ کا شروع $5$ سے ہوتا ہے، 16 حرف کا شالٹ کا مقدار کا دفعہ 5000 ہے。 if (CRYPT_SHA512 == 1) { echo "SHA-512: ".crypt('something','$6$rounds=5000$anexamplestringforsalt$'); } else { echo "SHA-512 not supported."; } ?>
بالائی کد کا اخراج (آپریٹنگ سسٹم کے معاملے سے وابستہ):
اسٹینڈرڈ ڈیز: stqAdD7zlbByI ایکسٹینڈیڈ ڈیز: _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.