कैसे एक लार्वा हैशेड पासवर्ड बनाने के लिए


98

मैं लारवेल के लिए एक हैशेड पासवर्ड बनाने की कोशिश कर रहा हूं। अब किसी ने मुझे लारवेल हैश हेल्पर का उपयोग करने के लिए कहा, लेकिन मैं इसे ढूंढ नहीं पा रहा हूं या मैं गलत दिशा में देख रहा हूं।

मैं एक लार्वा हैशेड पासवर्ड कैसे बनाऊं? और कहाँ?

संपादित करें: मुझे पता है कि कोड क्या है, लेकिन मुझे नहीं पता कि इसका उपयोग कहां और कैसे करना है ताकि यह मुझे हैशेड पासवर्ड वापस दे। यदि मुझे हैशेड पासवर्ड मिलता है तो मैं इसे डेटाबेस में मैन्युअल रूप से सम्मिलित कर सकता हूं



3
आप में से जो यहां सिर्फ मैन्युअल पासवर्ड बनाने के लिए हैं, आप नीचे दिए गए उत्तर का उपयोग कर सकते हैं php artisan tinker। जैसे,echo Hash::make('yourpassword')
सिनाज़ा

जवाबों:


186

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डेटाबेस में सम्मिलित करेंगे । आशा है, यह अब स्पष्ट है और यदि आप अभी भी भ्रमित हैं, तो मैं आपको कुछ ट्यूटोरियल पढ़ने के लिए सुझाव देता हूं, कुछ स्क्रीन कास्ट laracasts.com और tutsplus.com पर देखें और एक किताब भी पढ़ें 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 में दर्ज कर सकूं।
ग्राहम

जो मैंने उत्तर दिया है, उसमें एक पासवर्ड को बचाने के लिए dbआपको इसे एन्क्रिप्ट करने की आवश्यकता है, एक सादे पासवर्ड से आप इसका उपयोग करके एन्क्रिप्ट करेंगे Hash::make('passwordstring');और फिर डेटाबेस में इस हैशेड पासवर्ड को सहेजेंगे।
अल्फा

लेकिन मैं यह कैसे करूँ? अगर मैं सिर्फ उदाहरण के लिए एक php फ़ाइल बनाने के लिए यह काम नहीं करता है। जैसा कि आप समझेंगे कि मैं लारवेल के लिए काफी नया हूं
ग्राहम

मुझे लगता है कि मेरे पास अभी भी एक भ्रामक प्रश्न है। क्योंकि मैं समझ रहा हूं कि तुम क्या कह रहे हो। लेकिन मुझे इस कोड का उपयोग कहां करना चाहिए? किस फाइल में या ...? क्योंकि मैं केवल एक बार इसका उपयोग करने जा रहा हूं। यह फॉर्म के कुछ लोगों के लिए नहीं है कि मैं एक उपयोगकर्ता या कुछ जोड़ सकता हूं।
ग्राहम

17

लारवेल 5 का उपयोग करता है bcrypt। तो, आप यह भी कर सकते हैं।

$hashedpassword = bcrypt('plaintextpassword');

आउटपुट जो आप अपने डेटाबेस टेबल के पासवर्ड फ़ील्ड में सहेज सकते हैं।

Fn Ref: bcrypt


आपको यह फ़ंक्शन कहां से मिलेगा, यह PHP का हिस्सा नहीं है या Laravel है?
मार्टिंकोकली

1
@martinstoeckli ओह यह है, यह L5 में एक सहायक कार्य है, laravel.com/docs/5.0/hashing#basic-usage
नागेंद्र राव

ऐसा लगता है कि यह हाल ही में लारवेल
नागेंद्र राव

2
@ फ़्यूज़न bcrypt एक हैशिंग एल्गोरिथ्म है, एन्क्रिप्शन एल्गोरिथ्म नहीं है, हैशिंग के साथ आप इसके लिए हैश उत्पन्न होने के बाद सादे पाठ को वापस नहीं पा सकते हैं। यह हैशिंग एल्गोरिथ्म का पूरा बिंदु है। केवल एक चीज जो आप कर सकते हैं वह जांचें कि क्या आपके पास हैश के साथ एक सादा पाठ मेल खाता है।
नागेंद्र राव

1
@FreddySidauruk यह काम नहीं करेगा क्योंकि bcrypt हर बार अलग-अलग हैश उत्पन्न करता है, भले ही इनपुट पासवर्ड समान हो। आपको checkविधि का उपयोग करना होगा : if (Hash::check('secret', $hashedPassword)) { // The passwords match... }Ref: laravel.com/docs/5.1/hashing संपादित करें: यदि आपने इसमें मदद की है तो उत्तर को न भूलें;)
नागेंद्र राव

11

लारवेल हैश मुखौटा उपयोगकर्ता पासवर्ड संग्रहीत करने के लिए सुरक्षित Bcrypt हैशिंग प्रदान करता है।

बुनियादी उपयोग के लिए दो चीजों की आवश्यकता होती है:

सबसे पहले अपनी फ़ाइल में मुखौटा शामिल करें

use Illuminate\Support\Facades\Hash;

और Makeपासवर्ड उत्पन्न करने के लिए विधि का उपयोग करें ।

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

और जब आप हशेड स्ट्रिंग से मेल खाना चाहते हैं तो आप नीचे दिए गए कोड का उपयोग कर सकते हैं:

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

आप नीचे दिए गए Laravel दस्तावेज़ लिंक को हाशिंग के लिए और अधिक जान सकते हैं: 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
मुझे यह उत्तर पसंद है क्योंकि यह बताता है कि हैश कहाँ स्थित है (Illuminate \ Support \ Facades \ Hash)
shintaroid

6

यदि आप यह समझना चाहते हैं कि एक्सेलली लारवेल कैसे काम करता है तो आप जीथब पर पूरी कक्षा की समीक्षा कर सकते हैं: https://github.com/illuminate/hashing/blob/master/BcryptHasher.php

लेकिन मूल रूप से तीन 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 ));

हैशेड पासवर्ड लार्वा 5.x bcrypt पासवर्ड के समान है। नमक और लागत देने की आवश्यकता नहीं है, यह अपने डिफ़ॉल्ट मूल्यों को ले जाएगा।

उन तरीकों को लार्वा क्लास में लागू किया गया है, लेकिन यदि आप अधिक सीखना चाहते हैं तो कृपया आधिकारिक दस्तावेज की समीक्षा करें: http://php.net/manual/en/function.password-hash.php


काम करता है। पासवर्ड रीसेट करने के लिए इस्तेमाल किया जा सकता है अगर केवल डेटाबेस एक्सेस उपलब्ध हो।
234 पर air4x

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;
    }

जैसे- $ सादा-पाठ = 'पाठ'; $ टुकड़ों में बंटी-पाठ = हैश :: मेकअप ( 'पाठ');


हाँ। यह सही तरीका है। Illuminate \ Support \ Facades \ Hash का उपयोग करने की आवश्यकता है। धन्यवाद!
नोले

1

यहाँ समाधान है:

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

एनबी: अपने नियंत्रक में बहुत शुरुआत में 1 लाइन कोड का उपयोग करें। अंतिम लेकिन कम से कम, अपने नियंत्रक के फ़ंक्शन के अंदर कोड की बाकी दो पंक्तियों का उपयोग करें जहां से डेटा सबमिट किए जाने के बाद आप हेरफेर करना चाहते हैं। मुबारक कोडिंग :)


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);

बस इसे एक php फाइल में कॉपी / पेस्ट करें और इसे रन करें।


1
यह वास्तव में बुरा अभ्यास है। जब तक आप क्रिप्टोग्राफी में बहुत कुशल नहीं होते हैं, आपको बस पहले से बने हैशिंग कार्यों में निर्मित का उपयोग करना चाहिए।
निक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.