PHP crypt() ফাংশন

সংজ্ঞা ও ব্যবহার

crypt() ফাংশন ডিএস, ব্লোউফিশ এবং MD5 অ্যালগরিদম দ্বারা এনক্রিপশন করা স্ট্রিং ফেরত দেয়。

বিভিন্ন অপারেটিং সিস্টেমে, এই ফাংশনের আচরণ ভিন্ন হতে পারে, কিছু অপারেটিং সিস্টেম একাধিক অ্যালগরিদমের সমর্থন করে।ইনস্টল করার সময়, PHP কোন অ্যালগরিদম উপলব্ধ এবং কোন অ্যালগরিদম ব্যবহার করা হবে তা পরীক্ষা করে。

সপষ্ট ক্যালকুলেশন সল্ট পারামিটারের ফরম্যাট এবং লংথ নির্ভর করে।সল্ট ব্যবহার করে, একটি নির্দিষ্ট এনক্রিপশন মেথড দ্বারা তৈরি হওয়া স্ট্রিং সংখ্যা বাড়াতে সল্ট এনক্রিপশনকে আরও নিরাপদ করতে পারে。

এখানে crypt() ফাংশনের সাথে ব্যবহৃত কিছু কনস্ট্যান্ট আছে।এই কনস্ট্যান্ট মানগুলো ইনস্টল করার সময় PHP দ্বারা সেট করা হয়。

কনস্ট্যান্ট:

[CRYPT_SALT_LENGTH] ডিফল্ট এনক্রিপশন লংথ
[CRYPT_STD_DES] স্ট্যান্ডার্ড ডিএস ক্যালকুলেশন ভিত্তিক হ্যাশিং "./0-9A-Za-z" অক্ষরের দুটি অক্ষর ব্যবহার করে সল্ট।সল্টে অনৈতিহাসিক অক্ষর ব্যবহার করা crypt() ফাংশন ব্যর্থ হতে পারে。
[CRYPT_EXT_DES] এক্সটেন্ডড ডিএস ক্যালকুলেশন ভিত্তিক হ্যাশিং।সল্ট হল ৯টি অক্ষরের স্ট্রিং, একটি হাইফেনের পরে ৪বাইট গড়াতোলা সংখ্যা এবং ৪বাইট সল্ট ভার রয়েছে।তারা প্রকাশ্য অক্ষরে এনকোড করা হয়, প্রত্যেক অক্ষর ৬টি স্থান, সবচেয়ে কম বৈধ স্থানের প্রথম।০ থেকে ৬৩ এনকোড করা হয় "./0-9A-Za-z"।সল্টে অনৈতিহাসিক অক্ষর ব্যবহার করা crypt() ফাংশন ব্যর্থ হতে পারে。
[CRYPT_MD5] MD5 হ্যাশিং $1$-দিকে শুরু করে 12 বর্ণ সল্ট স্ট্রিং ব্যবহার করে。
[CRYPT_BLOWFISH] Blowfish আলগোরিথম নিম্নলিখিত সল্ট ব্যবহার করে: “$2a$”, একটি দুই স্থান কাস্ট পারামিটার, “$” এবং 64 বর্ণ স্ট্রিং, যা “./0-9A-Za-z”-এর অক্ষরগুলি থেকে নির্বাচিত হয়। সল্টে এই পরিসরের বাইরের অক্ষরগুলি ব্যবহার করা হলে crypt() একটি কালো স্ট্রিং ফিরিয়ে দেবে। দুই স্থান কাস্ট পারামিটার হলো 2-র পদান্তম পদান্তম পুনরাবৃত্তির সংখ্যা, যার পরিসর 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,সল্ট)
পারামিটার বর্ণনা
str প্রয়োজনীয়। এনক্রিপ্ট করতে হলে স্ট্রিং নির্দিষ্ট করুন。
সল্ট অপ্রয়োজনীয় নয়। একটি স্ট্রিং প্রদান করে যা এনক্রিপ্টড অক্ষরের সংখ্যা বাড়াতে ব্যবহৃত হয়, যাতে এনক্রিপশনকে আরও নিরাপদ করা যায়। যদি সল্ট পারামিটার প্রদান না হয়, তবে প্রত্যেক বার ফাংশনটি আহ্বান করার সময় 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, এক্সটেন্ডেড DES এবং Blowfish আলগরিদম।যদি সিস্টেমে প্রয়োজনীয় অভিন্ন না থাকে, তবে PHP তার নিজস্ব অভিন্ন ব্যবহার করবে。

প্রয়োগ

উদাহরণ 1

এই উদাহরণে, আমরা বিভিন্ন আলগরিদম পরীক্ষা করব:

<?php
// 2 অক্ষর salt
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt('something','st')."\n<br>";
}
else
{
echo "Standard DES not supported.\n<br>";
}
// 4 অক্ষর salt
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>";
}
// Salt অর্থাৎ $2a$ দ্বারা শুরু করা।দুই সংখ্যার cost পারামিটার: 09. 22 অক্ষর
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."\n<br>";
}
else
{
echo "Blowfish DES not supported.\n<br>";
}
// With $5$ starting 16 character salt. The default number 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>";
}
// With $5$ starting 16 character salt. The default number 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.