2016-03-22 73 views
0


我需要用SHA256 Base64密碼替換一些純文本密碼。 顯然,由數據庫函數生成的哈希與應用程序使用的哈希不匹配。例如:我的應用程序使用此函數生成散列:用MariaDB生成SHA-256密碼

$ echo -n "admin" | openssl dgst -sha256 -binary | openssl base64 
jGl25bVBBBW96Qi9Te4V37Fnqchz/Eu4qB9vKrRIqRg= 

現在,隨着數據庫的密碼相同:

select TO_BASE64(SHA2('admin',256)); 
OGM2OTc2ZTViNTQxMDQxNWJkZTkwOGJkNGRlZTE1ZGZiMTY3YTljODczZmM0YmI4YTgxZjZmMmFiNDQ4YTkxOA== 

正如你可以看到它不匹配!任何幫助?
我的數據庫版本:服務器版本:10.0.23-MariaDB的MariaDB的服務器

回答

1

取下echo -n "admin" | openssl dgst -sha256 -binary | openssl base64-binary,你會得到相同的結果。

-binary它返回sha256字符串的實際二進制數據,如果這就是你想要的,你必須將結果從SHA2('admin',256)轉換爲二進制,然後將TO_BASE64應用到它。

+2

確切的查詢來獲取你想要的哈希選擇TO_BASE64(UNHEX(SHA2(「管理員」,256)))這個答案給出了SHA2如何工作http://stackoverflow.com/一點點更多信息a/22121627/947240 – dMcNavish

+0

謝謝你完美的工作。 –

1
echo -n "admin" | openssl dgst -sha256 | awk '{ print $2; }' | openssl base64 
+0

你應該考慮爲未來的讀者添加一個解釋 – ADyson