簡體   English   中英

如何使用Javascript制作Laravel密碼哈希

[英]How to make Laravel Password hash using Javascript

我有一個laravel網站,該網站使用html css和js將其所有數據傳輸到Hybird移動應用程序。 行動應用程式可在離線模式下運作。 我必須在基於網站傳輸的數據的移動設備上執行身份驗證。 但是laravel使用bcrypt哈希。 我如何才能使類似的哈希器與javascript中的密碼匹配? 是否有可能在javascript中創建類似的哈希器,或者有人已經這樣做了?

嘗試回答您的模糊問題(假設您正在尋找JavaScript的bcrypt庫):

1)在這里有一個用於JavaScript的bcrypt庫: https : //github.com/nevins-b/javascript-bcrypt在這里找到: Java中的bCrypt實現

我會假設(但不確定)laravel使用php內置的password_hash()password_verify() ,從而輸出一種特殊格式,其中包含用過的鹽,例如來自php doc的示例:

$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';

您可以查看兩者的php文檔: https : //secure.php.net/manual/en/function.password-verify.php https://secure.php.net/manual/en/function.password-hash .php文件

您需要調整哈希字符串,以便可以在javascript bcrypt函數中使用它來驗證移動應用程序中用戶提供的密碼。

更新資料

鹽存儲在哈希中,因此您可以提取它以進行JavaScript驗證-只需在前綴“ $ 2y $ 10 $” 加上前22個字符(在此示例中,鹽為“ saltsaltsaltsaltsaltse”):

echo password_hash('JohnDoe', PASSWORD_DEFAULT, ['salt' => 'saltsaltsaltsaltsaltse']);
# will output $2y$10$saltsaltsaltsaltsaltseQMyqgPkFxQ1hfP2yBcGxgbJZGe1uGXq

更新

由於hassans研究,JavaScript庫被發現是從散列兼容phps password_hash() 分割的散列和/或單獨的prividing鹽。 為了避免js lib中php生成的哈希產生“無效的鹽修訂”錯誤,必須將$2y替換$2y哈希前綴中的$2a js庫中的哈希可以由php使用,而無需替換。

我認為所有身份驗證都應該在后端服務器上完成(在這種情況下,使用laravel)。 您不應將用戶信息傳輸到客戶端移動應用程序以進行脫機身份驗證。 可能會出現一些問題,可能會泄露機密數據,脫機移動應用程序上可能不會出現最近注冊的用戶信息,等等。

現在,我建議您通過在線身份驗證/注冊用戶,然后在離線模式下執行其他操作。 6或7天后定期檢查身份驗證。

但是,如果仍然需要每種bcrypt算法都應產生相同的哈希值,那么這里的討論應該會有所幫助。

注意Authentication should not be done on client side.

我認為您需要做的是對bucrypt進行API調用。

首先從您的應用中使用請求數據調用ajax

例如(使用jQuery):

var stringToHash = 'mypassword'; 
$.ajax({
   type: "GET",
   data:{password:stringToHash },
   success: function(response){
      console.log('here you get response');
     /*now the hash code*/
      console.log(response.data);

   }
});

在Laravel API控制器中(laravel 5)

public function hashPassword()
 {
      $hashPassword =  bcrypt(Input::get('password'));

      return response()->json([
                        'status' => 'success', 
                        'data' => $hashPassword
                        ]);

 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM