Linux

如何使用現有的密碼 sha256 來允許登錄授權?

  • December 22, 2020

我的目標

我有一個舊的 MySQL 數據庫,其中使用者名和密碼使用 sha256 散列。我沒有原始密碼,也無法學習它們。這是從數據庫到 Linux 系統的簡單使用者遷移。我需要在 linux 上創建所有這些使用者,因為 linux 身份驗證將用於其他部分,我們不想讓使用者再次創建憑據。

到目前為止我的想法

我已經看到您可以使用 crypt 生成使用影子文件的奇怪 base64 格式,但這需要原始密碼。我了解Linux中的過程是這樣的:

  1. 根據鹽和密碼生成簡單的 sha512 雜湊
  2. 循環 1000 5000 次,根據前一個雜湊值交替連接密碼和鹽的雜湊值計算新的 sha512 雜湊值。此外,sha512-crypt 允許您指定自定義輪數,從 1000 到 999999999
  3. 在最終雜湊上使用特殊的 base64 編碼來創建密碼雜湊字元串。

參考:https ://www.vidarholen.net/contents/blog/?p=33

由於第一步是用鹽生成雜湊,我認為應該是可能的。由於linux是開源的,我相信我可以嘗試在https://code.woboq.org/userspace/glibc/crypt/crypt-entry.c.html這樣的地方獲取crypt的原始碼 並從第2步開始,但是在做所有我不知道它是否會成功之前,我想知道是否有更簡單的方法。如果沒有,我在哪裡可以獲得正確的 linux 原始碼?我不確定我提供的連結是否正確。

非常感謝。

不,抱歉,您不能直接使用舊雜湊生成新雜湊。

一方面,您正在談論擁有 SHA-256 雜湊,然後使用它來計算基於 SHA-512 的雜湊,如果不反轉 SHA-256 雜湊就不會發生這種情況。其次,即使您要使用基於相同雜湊的 crypt 算法($5$對於基於 SHA-256 的 crypt),連結中的第一步仍然是“首先計算備用總和,sha512(密碼 + 鹽 +密碼)”,為此,您需要明文密碼。

從一個密碼雜湊轉換到另一個密碼的方法是強制您的使用者以某種方式刷新他們的密碼,以便您生成新的雜湊;或者更好的是,修改登錄常式,以便在新雜湊不存在時接受針對舊雜湊的登錄,同時生成新雜湊。這樣,您最終可以淘汰舊的雜湊,但被遺忘的帳戶除外。

引用自:https://unix.stackexchange.com/questions/625734