mysqlなどのパスワード暗号化

mysqlなどのパスワード暗号化

ユーザーを作成しましたが...パスワードを忘れました。

mysql> 'right' で識別される 'blayo'@'%' ユーザーを作成します。

どのLinuxコマンドラインツールパスワードはmysql 5.5と同じように暗号化されていますか?

mysql> mysql.userでパスワード、ユーザーを選択します。
-----------------------------+------ - +
*920018161824B14A1067A69626595E68CB8284CB |ブラヨ|

...正しいものを使用していることを確認してください

$ツール右
*920018161824B14A1067A69626595E68CB8284CB

答え1

いくつかのショート:

MySQL(-u(user)-pを追加する必要があるかもしれません):

mysql -NBe "select password('right')"

Python:

python -c 'from hashlib import sha1; print "*" + sha1(sha1("right").digest()).hexdigest().upper()'

真珠:

perl -MDigest::SHA1=sha1_hex -MDigest::SHA1=sha1 -le 'print "*". uc sha1_hex(sha1("right"))'

PHP:

php -r 'echo "*" . strtoupper(sha1(sha1("right", TRUE))). "\n";'

ルビー:

ruby -e 'require "digest/sha1"; puts "*" + Digest::SHA1.hexdigest(Digest::SHA1.digest("right")).upcase'

すべての出力:

*920018161824B14A1067A69626595E68CB8284CB

答え2

まあ、ささいな(たぶん不正行為)方法は、以下を実行することです。

mysql -NBe "select password('right')"

これはあなたのmysqlバージョンが使用するパスワードハッシュスキームを使用してパスワードを生成します。 [編集する:列名とASCIIテーブルアートを削除する-NBが追加されました。 ]

答え3

シェルを使用する別の方法:

echo -n 'right' | sha1sum | xxd -r -p |\
sha1sum | tr '[a-z]' '[A-Z]' | awk '{printf "*%s", $1}'

説明する:

  1. echo -n印刷時に改行なし
  2. sha1sum最初のSHA1
  3. xxd -r -p16進ハッシュキャンセル
  4. sha1sum2番目のSHA1
  5. tr '[a-z]' '[A-Z]'大文字に変換
  6. awk '{print "*" $1}'先行追加*

詳細は:

2.と3.の間に awk '{printf "%s", $1}'改行文字とハイフンを削除するオプションのステップを挿入できます。しかし、xxdはとにかくこれを無視します(dave_thompson_085のおかげで)。

{print "*" toupper($1)}また、ステップ5と6を次のものに置き換えるとすぐに完了できます(dave_thompson_085のおかげで)。

答え4

ハッシュ値は sha1(sha1(password)) です。。ないから(これは深刻なセキュリティ欠陥です)テーブルからハッシュ値を見つける

GNU coreutilsまたはBusyBoxのPOSIXツールとsha1(sha1(password))を使用すると、コマンドがダイジェストを16進数で印刷してバイナリに変換できる標準ツールがないsha1sumため、計算が面倒です。sha1sum

awk "$(printf %s 'right' | sha1sum |
       sed -e 's/ .*//' -e 's/../, 0x&/g' \
           -e 's/^/BEGIN {printf "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c"/' \
           -e 's/$/; exit}/')" | sha1sum

Pythonの標準ライブラリには標準ダイジェストがあるので、簡単な1行です。

printf %s 'right' |
python -c 'from hashlib import sha1; import sys; print sha1(sha1(sys.stdin.read()).digest()).hexdigest()'

または、1行にパスワードを入力してください。

python -c 'from hashlib import sha1; print sha1(sha1("right").digest()).hexdigest()'

関連情報