ඉතින්, ඔබට bcrypt භාවිතා කිරීමට අවශ්යද? නියමයි! කෙසේ වෙතත්, ගුප්ත විද්යාවේ වෙනත් අංශ මෙන්, ඔබ එය තනිවම නොකළ යුතුය. යතුරු කළමනාකරණය කිරීම, හෝ ලවණ ගබඩා කිරීම හෝ අහඹු සංඛ්යා උත්පාදනය කිරීම වැනි දෙයක් ගැන ඔබට කරදර වීමට අවශ්ය නම්, ඔබ එය වැරදිය.
හේතුව සරලයි: bcrypt ඉස්කුරුප්පු කිරීම එතරම් සුළු දෙයක් නොවේ . ඇත්ත වශයෙන්ම, ඔබ මෙම පිටුවේ ඇති සෑම කේතයක්ම පාහේ බැලුවහොත්, එය අවම වශයෙන් මෙම පොදු ගැටළු වලින් එකක්වත් උල්ලං ting නය කරන බව ඔබට පෙනෙනු ඇත.
එයට මුහුණ දෙන්න, ගුප්ත ලේඛනකරණය දුෂ්කර ය.
විශේෂ .යින් සඳහා එය තබන්න. මෙම පුස්තකාල නඩත්තු කිරීම රැකියාවක් කරන පුද්ගලයින් සඳහා එය තබන්න. ඔබට තීරණයක් ගැනීමට අවශ්ය නම්, ඔබ එය වැරදිය.
ඒ වෙනුවට පුස්තකාලයක් භාවිතා කරන්න. ඔබගේ අවශ්යතා අනුව කිහිපයක් පවතී.
පුස්තකාල
මෙන්න වඩාත් පොදු API වල බිඳවැටීමකි.
PHP 5.5 API - (5.3.7+ සඳහා ලබා ගත හැකිය)
PHP 5.5 සිට, මුරපද හෑෂ් කිරීම සඳහා නව API එකක් හඳුන්වා දෙනු ලැබේ. 5.3.7+ සඳහා (මා විසින්) නඩත්තු කරන ලද ෂිම් අනුකූලතා පුස්තකාලයක් ද ඇත. සම-සමාලෝචනය කරන ලද සහ ක්රියාත්මක කිරීම සඳහා භාවිතා කිරීමේ සරල වීමේ වාසිය මෙයයි .
function register($username, $password) {
$hash = password_hash($password, PASSWORD_BCRYPT);
save($username, $hash);
}
function login($username, $password) {
$hash = loadHashByUsername($username);
if (password_verify($password, $hash)) {
//login
} else {
// failure
}
}
ඇත්ත වශයෙන්ම, එය අතිශයින්ම සරල වීම අරමුණු කර ගෙන ඇත.
සම්පත්:
Zend \ Crypt \ මුරපදය \ Bcrypt (5.3.2+)
මෙය PHP 5.5 ට සමාන තවත් API එකක් වන අතර ඒ හා සමාන අරමුණක් කරයි.
function register($username, $password) {
$bcrypt = new Zend\Crypt\Password\Bcrypt();
$hash = $bcrypt->create($password);
save($user, $hash);
}
function login($username, $password) {
$hash = loadHashByUsername($username);
$bcrypt = new Zend\Crypt\Password\Bcrypt();
if ($bcrypt->verify($password, $hash)) {
//login
} else {
// failure
}
}
සම්පත්:
මුරපද ලිබ්
මුරපද හෑෂ් කිරීම සඳහා මෙය තරමක් වෙනස් ප්රවේශයකි. පාස්වර්ඩ්ලිබ් හුදෙක් හැෂිං ඇල්ගොරිතම විශාල සංඛ්යාවක් සඳහා සහය දක්වයි. ඔබගේ පාලනයෙන් බැහැර විය හැකි උරුමයන් සහ අසමාන පද්ධති සමඟ අනුකූලතාවයට සහාය දැක්වීමට අවශ්ය සන්දර්භය තුළ එය ප්රධාන වශයෙන් ප්රයෝජනවත් වේ. එය හැෂිං ඇල්ගොරිතම විශාල සංඛ්යාවක් සඳහා සහය දක්වයි. සහ 5.3.2+ සඳහා සහය දක්වයි
function register($username, $password) {
$lib = new PasswordLib\PasswordLib();
$hash = $lib->createPasswordHash($password, '$2y$', array('cost' => 12));
save($user, $hash);
}
function login($username, $password) {
$hash = loadHashByUsername($username);
$lib = new PasswordLib\PasswordLib();
if ($lib->verifyPasswordHash($password, $hash)) {
//login
} else {
// failure
}
}
යොමුව:
- ප්රභව කේතය / ප්රලේඛනය: GitHub
PHPASS
මෙය bcrypt සඳහා සහය දක්වන තට්ටුවක් වන අතර ඔබට PHP> = 5.3.2 වෙත ප්රවේශය නොමැති නම් ප්රයෝජනවත් වන තරමක් ශක්තිමත් ඇල්ගොරිතමයකට සහය දක්වයි ... එය ඇත්ත වශයෙන්ම PHP 3.0+ සඳහා සහය දක්වයි (bcrypt සමඟ නොවුනත්).
function register($username, $password) {
$phpass = new PasswordHash(12, false);
$hash = $phpass->HashPassword($password);
save($user, $hash);
}
function login($username, $password) {
$hash = loadHashByUsername($username);
$phpass = new PasswordHash(12, false);
if ($phpass->CheckPassword($password, $hash)) {
//login
} else {
// failure
}
}
සම්පත්
සටහන: විවෘත පවුරේ සත්කාරක නොවන PHPASS විකල්ප භාවිතා නොකරන්න, ඒවා වෙනස් ව්යාපෘති වේ !!!
BCrypt ගැන
ඔබ දුටුවහොත්, මෙම සෑම පුස්තකාලයක්ම තනි නූලක් ලබා දෙයි. එයට හේතුව BCrypt අභ්යන්තරව ක්රියා කරන ආකාරයයි. ඒ ගැන පිළිතුරු ටොන් ගණනක් තිබේ. මෙන්න මම ලියා ඇති තේරීමක්, මම මෙහි පිටපත් / අලවන්නේ නැත, නමුත් මෙයට සබැඳිය:
අවසන් කරන්න
විවිධ තේරීම් තිබේ. ඔබ තෝරාගන්නා දේ ඔබට භාරයි. කෙසේ වෙතත්, මම ඇත ඉතා ඉහල, ඔබ මේ සම්බන්ධයෙන් කටයුතු කිරීම සඳහා ඉහත පුස්තකාල වලින් එකක් භාවිතා බව නිර්දේශ කරමු.
නැවතත්, ඔබ crypt()
කෙලින්ම භාවිතා කරන්නේ නම් , ඔබ බොහෝ විට වැරදි දෙයක් කරයි. ඔබගේ කේතය භාවිතා කරන්නේ නම් hash()
(හෝ md5()
හෝ sha1()
සෘජුව), ඔබ පාහේ අනිවාර්යයෙන්ම යමක් වැරදි කරන්නේ.
පුස්තකාලයක් භාවිතා කරන්න ...