কীভাবে লারাভেল হ্যাশ পাসওয়ার্ড তৈরি করবেন


94

আমি লারাভেলের জন্য একটি হ্যাশ পাসওয়ার্ড তৈরি করার চেষ্টা করছি। এখন কেউ আমাকে লারাভেল হ্যাশ সহায়ক ব্যবহার করতে বলেছিল তবে আমি এটি খুঁজে পাচ্ছি না বা আমি ভুল দিকটিতে খুঁজছি।

আমি কীভাবে ল্যারাভেল হ্যাশ পাসওয়ার্ড তৈরি করব? এবং যেখানে?

সম্পাদনা: কোডটি কী তা আমি জানি তবে এটি কোথায় এবং কীভাবে ব্যবহার করতে হয় তা জানি না যাতে এটি আমাকে হ্যাশ পাসওয়ার্ডটি ফিরিয়ে দেয়। যদি আমি হ্যাশ পাসওয়ার্ড পেয়ে যাই তবে আমি নিজেই এটি ডাটাবেসে সন্নিবেশ করতে পারি



4
আপনারা যারা এখানে এসেছেন কেবল ম্যানুয়ালি একটি হ্যাশ পাসওয়ার্ড তৈরি করতে, আপনি নীচের উত্তরটি সাথে ব্যবহার করতে পারেন php artisan tinker। যেমন,echo Hash::make('yourpassword')
সিনাজা

উত্তর:


184

Bcrypt এ ব্যবহার করে একটি পাসওয়ার্ড হ্যাশ করা Laravel:

$password = Hash::make('yourpassword');

এটি একটি হ্যাশ পাসওয়ার্ড তৈরি করবে। আপনি এটি আপনার নিয়ামক বা এমনকি কোনও মডেলটিতেও ব্যবহার করতে পারেন, উদাহরণস্বরূপ, যদি ব্যবহারকারী কোনও POSTপদ্ধতি ব্যবহার করে আপনার নিয়ামকের কাছে কোনও ফর্ম ব্যবহার করে কোনও পাসওয়ার্ড জমা দেয় তবে আপনি এটি জাতীয় কিছু ব্যবহার করে হ্যাশ করতে পারেন:

$password = Input::get('passwordformfield'); // password is form field
$hashed = Hash::make($password);

এখানে, $hashedহ্যাশ পাসওয়ার্ড থাকবে। মূলত, আপনি এটি যখন তৈরি / একটি নতুন ব্যবহারকারী নিবন্ধন, তাই, উদাহরণস্বরূপ চেষ্টা করবো, একজন ব্যবহারকারী জমা বিস্তারিত যদি যেমন name, email, usernameএবং passwordইত্যাদি একটি ফর্ম ব্যবহার করে, তাহলে আপনি আগে ডাটাবেসের ডেটা প্রবেশ করায়, আপনি হ্যাশ করব তথ্য বৈধতা পরে পাসওয়ার্ড। আরও তথ্যের জন্য, ডকুমেন্টেশন পড়ুন

হালনাগাদ:

$password = 'JohnDoe';
$hashedPassword = Hash::make($password);
echo $hashedPassword; // $2y$10$jSAr/RwmjhwioDlJErOk9OQEO7huLz9O6Iuf/udyGbHPiTNuB3Iuy

সুতরাং, আপনি $hashedPasswordডাটাবেস মধ্যে সন্নিবেশ করব । আশা করি, এটি এখন পরিষ্কার হয়ে গেছে এবং যদি আপনি এখনও বিভ্রান্ত হন তবে আমি আপনাকে কয়েকটি টিউটোরিয়াল পড়ার পরামর্শ দিচ্ছি, ল্যারাকাস্টস.কম এবং টুটস্প্লাস.কম এ কিছু স্ক্রিন কাস্ট দেখতে এবং এটিতে একটি বই পড়তে হবে Laravel, এটি একটি ফ্রি ইবুক , আপনি এটি ডাউনলোড করতে পারেন।

আপডেট: যেহেতু কোনও ক্লাস বা ফর্ম ছাড়াই OPলারাভেল ব্যবহার করে ম্যানুয়ালি পাসওয়ার্ড এনক্রিপ্ট করতে চায় Hashতাই artisan tinkerকমান্ড প্রম্পট থেকে এটি বিকল্প উপায় :

  1. আপনার কমান্ড প্রম্পট / টার্মিনাল যান
  2. Laravelইনস্টলেশন (আপনার প্রকল্পের মূল ডিরেক্টরি) নেভিগেট করুন
  3. ব্যবহারের cd <directory name>এবং প্রেস কম্যান্ড প্রম্প্ট / টার্মিনাল থেকে প্রবেশ
  4. তারপরে লিখুন php artisan tinkerএবং এন্টার টিপুন
  5. তারপর লিখ echo Hash::make('somestring');
  6. আপনি কনসোলে একটি হ্যাশ পাসওয়ার্ড পাবেন, এটি অনুলিপি করুন এবং তারপরে আপনি যা করতে চান তা করুন।

আপডেট (ল্যারাভেল 5.x):

// Also one can use bcrypt
$password = bcrypt('JohnDoe');


তবে আমার এই কোথায় করা উচিত। আমি কয়েকবার এটি পেরিয়ে এসেছি।
গ্রাহাম

আমি মনে করি আমি একটি ভুল প্রশ্ন করেছি। আমার ডাটাবেস (যা আমি অন্য কারও কাছ থেকে পেয়েছি) কেবলমাত্র ব্যবহারকারীদের জন্য পাসওয়ার্ড পেয়েছে। এখন আমি একটি পাসওয়ার্ড তৈরি করতে চাই যা লারাভেল দ্বারা হ্যাশ করা উচিত। আমি কীভাবে একটি হ্যাশ পাসওয়ার্ড তৈরি করব যাতে আমি এটি ডিবিতে প্রবেশ করতে পারি।
গ্রাহাম

এটাই আমি উত্তর দিয়েছি, আপনার মধ্যে একটি পাসওয়ার্ড সংরক্ষণ করার জন্য dbএটি এনক্রিপ্ট করা দরকার, একটি সরল পাসওয়ার্ড থেকে আপনি এটি ব্যবহার করে এনক্রিপ্ট করবেন Hash::make('passwordstring');এবং তারপরে এই হ্যাশ পাসওয়ার্ডটি ডাটাবেসে সংরক্ষণ করুন।
আলফা

তবে আমি কীভাবে এটি করব? আমি যদি উদাহরণস্বরূপ একটি পিএইচপি ফাইল তৈরি করি তবে এটি কাজ করে না। যেমন আপনি বুঝতে পেরেছেন আমি ল্যাভারেলে বেশ নতুন
গ্রাহাম

আমার মনে হয় আমার এখনও একটি বিভ্রান্তিমূলক প্রশ্ন আছে। কারণ আপনি কী বলছেন তা আমি বুঝতে পেরেছি। তবে আমি এই কোডটি কোথায় ব্যবহার করব? কোন ফাইল বা ...? কারণ আমি কেবল এটি একবার ব্যবহার করব। এটি কোনও রূপের জন্য নয় যে আমি কোনও ব্যবহারকারী বা কিছু যুক্ত করতে পারি।
গ্রাহাম

17

লারাভেল 5 ব্যবহার করে bcrypt। সুতরাং, আপনি এটিও করতে পারেন।

$hashedpassword = bcrypt('plaintextpassword');

যার ফলাফল আপনি আপনার ডাটাবেস টেবিলের পাসওয়ার্ড ক্ষেত্রে সংরক্ষণ করতে পারেন।

Fn রেফারেন্স: bcrypt


আপনি এই ফাংশনটি কোথা থেকে পাবেন, এটি পিএইচপি বা লারাভেলের অংশ নয়?
মার্টিনস্টোকেলি

4
@ মার্টিনস্টোএকলি ওহ হ্যাঁ, এটি এল 5-এ একটি সহায়ক কাজ, লারাভেল ডকসস
নগেন্দ্র রাও

দেখে মনে হচ্ছে এটি সাম্প্রতিক লারাভেল
নাগেন্দ্র রাও

4
@ ফিউশন বিক্রিপ্ট হ্যাশিং অ্যালগরিদম, কোনও এনক্রিপশন অ্যালগরিদম নয়, হ্যাশ করার পরে আপনি হ্যাশ তৈরি হওয়ার পরে আপনি সরল পাঠটি ফিরে পেতে পারবেন না। এটি হ্যাশিং অ্যালগরিদমের পুরো পয়েন্ট। কেবলমাত্র আপনি যা করতে পারেন তা হ'ল কোনও সরল পাঠ্য আপনার কাছে থাকা হ্যাশের সাথে মেলে কিনা।
নগেন্দ্র রাও

4
@ ফ্রেডিসিদাউরুক এটি কাজ করবে না কারণ ইনপুট পাসওয়ার্ড একই থাকলেও বিসিআরপিট প্রতিটি সময় বিভিন্ন হ্যাশ তৈরি করে। আপনাকে এই checkপদ্ধতিটি ব্যবহার করতে হবে : if (Hash::check('secret', $hashedPassword)) { // The passwords match... }রেফ: লারাভেল ডটকম / ৫.১ / হ্যাশিং সম্পাদনা: উত্তর যদি আপনাকে সহায়তা করে থাকে তবে তা উত্তর দিতে ভুলবেন না;)
নগেন্দ্র রাও

11

লারাভেল হ্যাশ ফেসেড ব্যবহারকারীর পাসওয়ার্ডগুলি সংরক্ষণ করার জন্য সুরক্ষিত Bcrypt হ্যাশিং সরবরাহ করে।

প্রাথমিক ব্যবহারের জন্য দুটি জিনিস প্রয়োজন:

প্রথমে আপনার ফাইলে ফেকড অন্তর্ভুক্ত করুন

use Illuminate\Support\Facades\Hash;

এবং Makeপাসওয়ার্ড তৈরি করতে পদ্ধতিটি ব্যবহার করুন ।

$hashedPassword = Hash::make($request->newPassword);

এবং আপনি যখন হ্যাশড স্ট্রিংয়ের সাথে মিল রাখতে চান আপনি নীচের কোডটি ব্যবহার করতে পারেন:

Hash::check($request->newPasswordAtLogin, $hashedPassword)

আপনি হ্যাশিংয়ের জন্য নীচে লারাভেল ডকুমেন্টের লিঙ্কের সাথে আরও শিখতে পারেন: https://laravel.com/docs/5.5/hashing


7

ডাটাবেসে পাসওয়ার্ড সংরক্ষণ করতে, পাসওয়ার্ডের হ্যাশ তৈরি করুন এবং তারপরে সেভ করুন।

$password = Input::get('password_from_user'); 
$hashed = Hash::make($password); // save $hashed value

পাসওয়ার্ড যাচাই করতে, ডাটাবেস থেকে পাসওয়ার্ড অ্যাকাউন্টের স্টোর করুন

// $user is database object
// $inputs is Input from user
if( \Illuminate\Support\Facades\Hash::check( $inputs['password'], $user['password']) == false) {
  // Password is not matching 
} else {
  // Password is matching 
}

4
আমি এই উত্তরটি পছন্দ করি কারণ এটি
হ্যাশটি

6

আপনি যদি বুঝতে চান যে লারাভেল কীভাবে উদ্দীপনা নিয়ে কাজ করে আপনি গিথুবটিতে সম্পূর্ণ শ্রেণীর পর্যালোচনা করতে পারেন: https://github.com/illuminate/hashing/blob/master/BcryptHasher.php

তবে মূলত এতে জড়িত রয়েছে তিনটি পিএইচপি পদ্ধতি:

$pasword = 'user-password';
// To create a valid password out of laravel Try out!
$cost=10; // Default cost
$password = password_hash($pasword, PASSWORD_BCRYPT, ['cost' => $cost]);

// To validate the password you can use
$hash = '$2y$10$NhRNj6QF.Bo6ePSRsClYD.4zHFyoQr/WOdcESjIuRsluN1DvzqSHm';

if (password_verify($pasword, $hash)) {
   echo 'Password is valid!';
} else {
   echo 'Invalid password.';
}

//Finally if you have a $hash but you want to know the information about that hash. 
print_r( password_get_info( $password_hash ));

হ্যাশ পাসওয়ার্ড লারাভেল ৫ এক্স বিক্রিপ্ট পাসওয়ার্ডের মতো। নুন এবং খরচ দেওয়ার দরকার নেই, এটির ডিফল্ট মানগুলি নেবে।

এই পদ্ধতিগুলি লারাভেল শ্রেণিতে প্রয়োগ করা হয়েছে, তবে আপনি যদি আরও জানতে চান তবে দয়া করে অফিসিয়াল ডকুমেন্টেশনটি পর্যালোচনা করুন: http://php.net/manual/en/function.password-hash.php


কাজ। পাসওয়ার্ড পুনরায় সেট করতে ব্যবহার করা যেতে পারে যদি কেবল ডাটাবেস অ্যাক্সেস পাওয়া যায়।
এয়ার

2

আপনি নিম্নলিখিত ব্যবহার করতে পারেন:

$hashed_password = Hash::make('Your Unhashed Password');

আপনি আরও তথ্য পেতে পারেন: এখানে


1

BcryptHasher.php এ আপনি হ্যাশ কোডটি পেতে পারেন:

public function make($value, array $options = array())
{
    $cost = isset($options['rounds']) ? $options['rounds'] : $this->rounds;

    $hash = password_hash($value, PASSWORD_BCRYPT, array('cost' => $cost));

            $hash = password_hash($value, PASSWORD_BCRYPT, array('cost' => $cost));
            echo $value.' '.PASSWORD_BCRYPT.' '.$cost.' ';
            echo $hash;die();
    if ($hash === false)
    {
        throw new RuntimeException("Bcrypt hashing not supported.");
    }

    return $hash;
}

1
use Illuminate\Support\Facades\Hash;
if(Hash::check($plain-text,$hashed-text))
    {
       return true;
    }
    else
    {
        return false;
    }

যেমন- $ সাধারণ-পাঠ্য = 'পাঠ্য'; hed হ্যাশড-টেক্সট = হ্যাশ :: মেক ('পাঠ্য');


হ্যাঁ. এটি সঠিক উপায়। আলোকসজ্জা \ সহায়তা \ মুখোমুখি \ হ্যাশ ব্যবহার করা দরকার। ধন্যবাদ!
নোল

1

সমাধান এখানে:

use Illuminate\Support\Facades\Hash;    
$password = request('password'); // get the value of password field
$hashed = Hash::make($password); // encrypt the password

এনবি: আপনার নিয়ামকের খুব প্রথম দিকে লাইন কোডটি ব্যবহার করুন। সর্বশেষে তবে অন্তত নয়, আপনার নিয়ামকের ফাংশনের ভিতরে বাকী দুটি লাইন কোড ব্যবহার করুন যেখানে আপনি জমা দেওয়ার পরে ডেটা দিয়ে ম্যানিপুলেট করতে চান। শুভ কোডিং :)


0

লারাভেল এবং লুমেনে পাসওয়ার্ডের তুলনা করুন:

এটি সম্ভব হতে পারে যে bcrypt ফাংশনটি php7 এর সাথে কাজ করে না তবে আপনি আপনার প্রয়োজনীয়তা অনুসারে ল্যারাভেল এবং লুমেনের নীচের কোডটি ব্যবহার করতে পারেন:

use Illuminate\Support\Facades\Hash;

$test = app('hash')->make("test");
if (Hash::check('test', $test)) {
   echo "matched";
} else {
   echo "no matched";
}

আমি আশা করি, এই সাহায্য আপনাকে খুশি করবে :)


-5

ঠিক আছে, এটি hash.php এর মেক ফাংশন থেকে একটি নিষ্কাশন

    $work = str_pad(8, 2, '0', STR_PAD_LEFT);

    // Bcrypt expects the salt to be 22 base64 encoded characters including
    // dots and slashes. We will get rid of the plus signs included in the
    // base64 data and replace them with dots.
    if (function_exists('openssl_random_pseudo_bytes'))
    {
        $salt = openssl_random_pseudo_bytes(16);
    }
    else
    {
        $salt = Str::random(40);
    }

    $salt = substr(strtr(base64_encode($salt), '+', '.'), 0 , 22);

    echo crypt('yourpassword', '$2a$'.$work.'$'.$salt);

কেবল একটি পিএইচপি ফাইলে এটি অনুলিপি / আটকান এবং এটি চালান।


4
এটি আসলেই খারাপ অভ্যাস। আপনি যদি ক্রিপ্টোগ্রাফিতে খুব দক্ষ না হন তবে আপনার কেবল ইতিমধ্যে তৈরি হ্যাশিং ফাংশনগুলি ব্যবহার করা উচিত।
নিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.