وظيفة تشفير PHP ()
❮ مرجع سلسلة PHP
التعريف والاستخدام
ترجع الدالة crypt () سلسلة مجزأة باستخدام خوارزميات DES أو Blowfish أو MD5.
تعمل هذه الوظيفة بشكل مختلف في أنظمة التشغيل المختلفة. يتحقق PHP من الخوارزميات المتاحة وما هي الخوارزميات التي يجب استخدامها عند تثبيتها.
معلمة الملح اختيارية. ومع ذلك ، يقوم crypt () بإنشاء كلمة مرور ضعيفة بدون الملح. تأكد من تحديد ملح قوي بدرجة كافية لتحسين الأمان.
هناك بعض الثوابت التي يتم استخدامها مع وظيفة crypt (). يتم تعيين قيمة هذه الثوابت بواسطة PHP عند تثبيتها.
الثوابت:
- [CRYPT_STD_DES] - تجزئة قياسية قائمة على DES مع حرفين ملح من الأبجدية "./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 لحساب التكرار لمقياس خوارزمية التجزئة الأساسي ، ويجب أن يكون في النطاق 04-31. القيم الموجودة خارج هذا النطاق ستؤدي إلى فشل الوظيفة.
- [CRYPT_SHA_256] - تجزئة SHA-256 مع ملح 16 حرفًا يبدأ بـ 5 دولارات. إذا بدأت سلسلة الملح بـ "rounds = <N> $" ، يتم استخدام القيمة الرقمية لـ N للإشارة إلى عدد مرات تنفيذ حلقة التجزئة ، تمامًا مثل معلمة التكلفة على Blowfish. العدد الافتراضي للجولات هو 5000 ، وهناك حد أدنى من 1000 و 999،999،999 كحد أقصى. سيتم اقتطاع أي تحديد لـ N خارج هذا النطاق إلى أقرب حد.
- [CRYPT_SHA_512] - تجزئة SHA-512 مع ملح 16 حرفًا يبدأ بـ 6 دولارات. إذا بدأت سلسلة الملح بـ "rounds = <N> $" ، يتم استخدام القيمة الرقمية لـ N للإشارة إلى عدد مرات تنفيذ حلقة التجزئة ، تمامًا مثل معلمة التكلفة على Blowfish. العدد الافتراضي للجولات هو 5000 ، وهناك حد أدنى من 1000 و 999،999،999 كحد أقصى. سيتم اقتطاع أي تحديد لـ N خارج هذا النطاق إلى أقرب حد.
في الأنظمة التي تدعم فيها هذه الوظيفة خوارزميات متعددة ، يتم تعيين الثوابت أعلاه على "1" إذا كانت مدعومة و "0" بخلاف ذلك.
ملاحظة: لا توجد وظيفة فك التشفير. تستخدم الدالة crypt () خوارزمية أحادية الاتجاه.
بناء الجملة
crypt(str,salt)
قيمه المعامل
Parameter | Description |
---|---|
str | Required. Specifies the string to be hashed |
salt | Optional. A salt string to base the hashing on |
تفاصيل تقنية
قيمة الإرجاع: | تُرجع السلسلة المشفرة أو السلسلة التي أقصر من 13 حرفًا ويضمن اختلافها عن السلسلة عند الفشل |
---|---|
إصدار PHP: | 4+ |
التغيير: | PHP 5.6.0 - يعرض تحذير أمان E_NOTICE إذا تم حذف الملح . PHP 5.3.7 - تمت إضافة وضعي Blowfish $ 2x $ و $ 2y $. PHP 5.3.2 - تمت إضافة SHA-256 و SHA-512. تم إصلاح سلوك السمكة المنتفخة في الجولات غير الصالحة بإرجاع سلسلة "فشل" ("* 0" أو "* 1") ، بدلاً من الرجوع إلى DES. PHP 5.3.0 - PHP تحتوي الآن على تطبيقها الخاص لتشفير MD5 و Standard DES و Extended DES وخوارزميات Blowfish وستستخدم ذلك إذا كان النظام يفتقر إلى الدعم لواحدة أو أكثر من الخوارزميات. |
مزيد من الأمثلة
مثال
في هذا المثال سنختبر الخوارزميات المختلفة:
<?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.
❮ مرجع سلسلة PHP