<PHP سلسلة المرجعي
تعريف والاستخدام
و crypt() الدالة بإرجاع سلسلة تجزئته باستخدام خوارزميات DES، السمكة المنتفخة، أو MD5.
هذه الوظيفة يتصرف مختلفة على أنظمة تشغيل مختلفة. PHP يتحقق ما تتوفر الخوارزميات وما خوارزميات لاستخدامها عند تثبيته.
المعلمة الملح اختيارية. ومع ذلك، crypt() يخلق كلمة مرور ضعيفة بدون ملح. تأكد من تحديد من الملح قوية بما فيه الكفاية لتحسين الأمن.
هناك بعض الثوابت التي تستخدم جنبا إلى جنب مع crypt() وظيفة. يتم تعيين قيمة هذه الثوابت بواسطة PHP عند تثبيته.
الثوابت:
- [CRYPT_STD_DES] - قياسي التجزئة DES-based مع اثنين من الملح حرف من الأبجدية "./0-9A-Za-z" . وذلك باستخدام أحرف غير صالحة في الملح يتسبب في هذه الوظيفة إلى فشل.
- [CRYPT_EXT_DES] - مدد التجزئة على أساس DES-مع الملح تسعة شخصية تتكون من تسطير تليها 4 بايت عدد التكرار و 4 بايت من الملح. يتم ترميز هذه كما طبع الحروف، 6 بت لكل حرف، أقل شخصية هامة أولا. يتم ترميز القيم 0-63 كما "./0-9A-Za-z" . وذلك باستخدام أحرف غير صالحة في الملح يتسبب في وظيفة فشل.
- [CRYPT_MD5] - MD5 تجزئة مع الملح 12 شخصية بدأت مع $ 1 $
- [CRYPT_BLOWFISH] - تجزئة السمكة المنتفخة مع الملح بدءا من $ 2A $، $ 2X $، أو $ 2Y $، وهو معلمتين تكلفة أرقام "$" ، و 22 حرفا من الأبجدية "./0-9A-Za-z" . وذلك باستخدام أحرف خارج الأبجدية تسبب هذه الوظيفة لإرجاع سلسلة ذات طول صفري. و "$" المعلمة لوغاريتم قاعدة 2 من عدد التكرار لالكامن وراء ضرب السمكة المنتفخة algorithmeter تجزئة ويجب أن تكون في نطاق 04-31. سوف القيم خارج هذا النطاق يؤدي وظيفة إلى فشل.
- [CRYPT_SHA_256] - SHA-256 التجزئة مع الملح 16 حرفا تبدأ بحرف $ 5 $. إذا بدأت سلسلة الملح مع "rounds=<N>$" ، يتم استخدام قيمة رقمية من N للإشارة إلى عدد المرات التي يجب أن تنفذ حلقة التجزئة، مثل الكثير من المعلمة التكلفة على السمكة المنتفخة. العدد الافتراضي من جولات 5000، وهناك ما لا يقل عن 1000 وبحد أقصى 999999999. سيتم اقتطاع أي اختيار N خارج هذا النطاق إلى أقرب حد.
- [CRYPT_SHA_512] - SHA-512 التجزئة مع الملح 16 حرفا تبدأ بحرف $ 6 $. إذا بدأت سلسلة الملح مع "rounds=<N>$" ، يتم استخدام قيمة رقمية من N للإشارة إلى عدد المرات التي يجب أن تنفذ حلقة التجزئة، مثل الكثير من المعلمة التكلفة على السمكة المنتفخة. العدد الافتراضي من جولات 5000، وهناك ما لا يقل عن 1000 وبحد أقصى 999999999. سيتم اقتطاع أي اختيار N خارج هذا النطاق إلى أقرب حد.
على الأنظمة التي تدعم هذه الوظيفة خوارزميات متعددة، يتم تعيين الثوابت أعلاه لل "1" إذا كان معتمدا و "0" خلاف ذلك.
Note: لا توجد وظيفة فك تشفير. و crypt() تستخدم وظيفة في اتجاه واحد الخوارزمية.
بناء الجملة
crypt( str,salt )
معامل | وصف |
---|---|
str | مطلوب. تحدد سلسلة ليتم تجزئته |
salt | اختياري. سلسلة الملح إلى إسناد تجزئة على |
تفاصيل تقنية
قيمة الإرجاع: | إرجاع سلسلة المشفرة أو سلسلة أقصر من 13 حرفا ومكفول للتختلف من الملح على الفشل |
---|---|
صفحة PHP: | 4+ |
التغيير: | أضيفت $ 2X $ و $ 2Y وسائط $ السمكة المنتفخة في PHP 5.3.7 للتعامل مع الهجمات الكبيرة بت المحتملة. أضيفت الثوابت SHA-256 و SHA-512 في PHP 5.3.2. اعتبارا من PHP 5.3.2، سلوك السمكة المنتفخة على جولات غير صالحة إرجاع "failure" سلسلة ("*0" or "*1") ، بدلا من أن يتراجع إلى DES. اعتبارا من PHP 5.3.0، يحتوي PHP تنفيذه الخاصة للسرداب MD5، ستاندرد DES، DES الموسعة وخوارزميات السمكة المنتفخة، وسوف تستخدم أنه إذا كان النظام يفتقر إلى الدعم لواحد أو أكثر من الخوارزميات. |
مثال
مثال 1
في هذا المثال سوف نقوم اختبار خوارزميات مختلفة:
<?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 $5$. 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.";
}
?>
الناتج من التعليمات البرمجية أعلاه يمكن أن يكون (depending on the operating system) :
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.
<PHP سلسلة المرجعي